diff options
author | Manoj Srivastava <srivasta@debian.org> | 2018-02-07 17:05:52 -0800 |
---|---|---|
committer | Manoj Srivastava <srivasta@debian.org> | 2018-02-07 17:05:52 -0800 |
commit | 355fad18841ec452fc9931ab7f1dbd93d5ebd0ca (patch) | |
tree | 13665caf8c178b1352fad213c035cbd5ef05696c | |
parent | 88bdd608edf176907215cc63f00ba4ca5bd9fafb (diff) |
[master]: fix FTBS on HURD.
Signed-off-by: Manoj Srivastava <srivasta@debian.org>
-rw-r--r-- | debian/changelog | 8 | ||||
-rw-r--r-- | src/main.c | 26 |
2 files changed, 20 insertions, 14 deletions
diff --git a/debian/changelog b/debian/changelog index 3751557..e158dc6 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,11 @@ +flex (2.6.1-1.3) unstable; urgency=medium + + * Non-maintainer upload. + * Fix FTBFS on hurd (upstream 7975c43384d766ca12cb3f292754dbdc34168886). + (Closes: 838133). + + -- Christoph Berg <myon@debian.org> Wed, 04 Jan 2017 19:53:51 +0100 + flex (2.6.1-1.2) unstable; urgency=medium * Non-maintainer upload. @@ -358,8 +358,8 @@ void check_options (void) if (!path) { m4 = M4; } else { + int m4_length = strlen(m4); do { - char m4_path[PATH_MAX]; int length = strlen(path); struct stat sbuf; @@ -367,19 +367,17 @@ void check_options (void) if (!endOfDir) endOfDir = path+length; - if ((endOfDir-path+2) >= sizeof(m4_path)) { - path = endOfDir+1; - continue; - } - - strncpy(m4_path, path, sizeof(m4_path)); - m4_path[endOfDir-path] = '/'; - m4_path[endOfDir-path+1] = '\0'; - strncat(m4_path, m4, sizeof(m4_path)); - if (stat(m4_path, &sbuf) == 0 && - (S_ISREG(sbuf.st_mode)) && sbuf.st_mode & S_IXUSR) { - m4 = strdup(m4_path); - break; + { + char m4_path[endOfDir-path + 1 + m4_length + 1]; + + memcpy(m4_path, path, endOfDir-path); + m4_path[endOfDir-path] = '/'; + memcpy(m4_path + (endOfDir-path) + 1, m4, m4_length + 1); + if (stat(m4_path, &sbuf) == 0 && + (S_ISREG(sbuf.st_mode)) && sbuf.st_mode & S_IXUSR) { + m4 = strdup(m4_path); + break; + } } path = endOfDir+1; } while (path[0]); |