From 355fad18841ec452fc9931ab7f1dbd93d5ebd0ca Mon Sep 17 00:00:00 2001 From: Manoj Srivastava Date: Wed, 7 Feb 2018 17:05:52 -0800 Subject: [master]: fix FTBS on HURD. Signed-off-by: Manoj Srivastava --- debian/changelog | 8 ++++++++ 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 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]); -- cgit v1.2.3