summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManoj Srivastava <srivasta@debian.org>2018-02-07 17:05:52 -0800
committerManoj Srivastava <srivasta@debian.org>2018-02-07 17:05:52 -0800
commit355fad18841ec452fc9931ab7f1dbd93d5ebd0ca (patch)
tree13665caf8c178b1352fad213c035cbd5ef05696c
parent88bdd608edf176907215cc63f00ba4ca5bd9fafb (diff)
[master]: fix FTBS on HURD.
Signed-off-by: Manoj Srivastava <srivasta@debian.org>
-rw-r--r--debian/changelog8
-rw-r--r--src/main.c26
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.
diff --git a/src/main.c b/src/main.c
index e329e4e..177187f 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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]);