[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1009066: pcre2: FTBFS on hurd-i386: error: ‘PATH_MAX’ undeclared



Source: pcre2
Version: 10.39-1
Severity: important
Tags: patch ftbfs
User: debian-hurd@lists.debian.org
Usertags: hurd

This packages fails to build on hurd-i386 as of version 10.39-1;
from the last build log for 10.39-3 [1]:

| gcc -DHAVE_CONFIG_H -I. -I./src  "-I./src" -Wdate-time -D_FORTIFY_SOURCE=2   -g -O2 -ffile-prefix-map=/<<PKGBUILDDIR>>=. -fstack-protector-strong -Wformat -Werror=format-security -Dregcomp=PCRE2regcomp -Dregexec=PCRE2regexec -Dregerror=PCRE2regerror -Dregfree=PCRE2regfree -c -o src/pcre2grep-pcre2grep.o `test -f 'src/pcre2grep.c' || echo './'`src/pcre2grep.c
| src/pcre2grep.c: In function ‘grep_or_recurse’:
| src/pcre2grep.c:3365:25: error: ‘PATH_MAX’ undeclared (first use in this function)
|  3365 |       char resolvedpath[PATH_MAX];
|       |                         ^~~~~~~~
| src/pcre2grep.c:3365:25: note: each undeclared identifier is reported only once for each function it appears in
| Makefile:2574: recipe for target 'src/pcre2grep-pcre2grep.o' failed

[1] https://buildd.debian.org/status/fetch.php?pkg=pcre2&arch=hurd-i386&ver=10.39-3&stamp=1637168178&raw=0

Attached is a simplistic patch.
--- pcre2-10.39.orig/src/pcre2grep.c
+++ pcre2-10.39/src/pcre2grep.c
@@ -3362,19 +3362,25 @@ if (isdirectory(pathname))
 
 #ifdef HAVE_REALPATH
       {
-      char resolvedpath[PATH_MAX];
+      char *resolvedpath;
       BOOL isSame;
       size_t rlen;
-      if (realpath(childpath, resolvedpath) == NULL)
+      if ((resolvedpath = realpath(childpath, NULL)) == NULL)
         continue;     /* This path is invalid - we can skip processing this */
       isSame = strcmp(pathname, resolvedpath) == 0;
-      if (isSame) continue;    /* We have a recursion */
+      if (isSame)
+        {
+          free(resolvedpath);
+          continue;    /* We have a recursion */
+        }
       rlen = strlen(resolvedpath);
-      if (rlen++ < sizeof(resolvedpath) - 3)
+      rlen++;
         {
         BOOL contained;
+        resolvedpath = (char *)realloc(resolvedpath, rlen + 1);
         strcat(resolvedpath, "/");
         contained = strncmp(pathname, resolvedpath, rlen) == 0;
+        free(resolvedpath);
         if (contained) continue;    /* We have a recursion */
         }
       }

Reply to: