Package: analog
Severity: normal
Tags: upstream patch

Dear Maintainer,

analog currently fails to build on hurd-i386 because it uses the PATH_MAX 
macro. The attached patch should fix the issue: it changes calls to realpath() 
so that the second argument is NULL, which forces realpath() to allocate 
memory, thus removing the need for the application to allocate a buffer of size 
PATH_MAX+1.

WBR,
Cyril Roelandt.

-- System Information:
Debian Release: wheezy/sid
  APT prefers unreleased
  APT policy: (500, 'unreleased'), (500, 'unstable')
Architecture: hurd-i386 (i686-AT386)

Kernel: GNU-Mach 1.3.99/Hurd-0.3
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
--- analog-6.0.orig/src/globals.c	2004-12-19 13:51:30.000000000 +0000
+++ analog-6.0/src/globals.c	2012-05-28 00:40:51.000000000 +0000
@@ -1266,7 +1266,6 @@
   else
     COPYSTR(commandname, comname);
 #ifndef NOFOLLOW
-  commandpath = (char *)xmalloc(PATH_MAX);
   done = FALSE;
   if (strpbrk(commandname, PATHSEPS) == NULL &&
       (path = getenv("PATH")) != NULL) {
@@ -1275,12 +1274,12 @@
     for (s = strtok(pathcp, ":"); !done && s != NULL; s = strtok(NULL, ":")) {
       ENSURE_LEN(t, l, strlen(s) + strlen(commandname) + 2);
       sprintf(t, "%s%c%s", s, DIRSEP, commandname);
-      if (realpath(t, commandpath) != NULL && access(commandpath, X_OK) == 0 &&
+      if ((commandpath = realpath(t, NULL)) != NULL && access(commandpath, X_OK) == 0 &&
 	  stat(commandpath, &buf) == 0 && S_ISREG(buf.st_mode))
 	done = TRUE;
     }
   }
-  else if (realpath(commandname, commandpath) != NULL)
+  else if ((commandpath = realpath(commandname, NULL)) != NULL)
     done = TRUE;
   if (!done)
     strcpy(commandpath, commandname);

Reply via email to