Source: gnunet
Version: 0.10.1-2.1
Severity: important
Tags: patch
Usertags: hurd
User: debian-h...@lists.debian.org

Hello,

currently gnunet FTBFS on GNU/Hurd due to a missing definition of
PATH_MAX. The attached patch fixes this problem, by dynamically
allocating and freeing the required strings.

Thanks!
Index: gnunet-0.10.1/src/testbed/gnunet-daemon-testbed-blacklist.c
===================================================================
--- gnunet-0.10.1.orig/src/testbed/gnunet-daemon-testbed-blacklist.c
+++ gnunet-0.10.1/src/testbed/gnunet-daemon-testbed-blacklist.c
@@ -212,7 +212,7 @@ run (void *cls, char *const *args, const
      const struct GNUNET_CONFIGURATION_Handle *c)
 {
   char *shome;
-  char fname[PATH_MAX];
+  char *fname = NULL;
 
   if (GNUNET_OK != GNUNET_CONFIGURATION_get_value_filename (c, "PATHS",
                                                             "GNUNET_HOME",
@@ -221,7 +221,10 @@ run (void *cls, char *const *args, const
     GNUNET_break (0);
     return;
   }
-  GNUNET_assert (0 < GNUNET_snprintf (fname, PATH_MAX, "%s/whitelist", shome));
+  int len = strlen(shome) + 10 + 1;
+
+  fname = GNUNET_malloc (len);
+  GNUNET_assert (0 < GNUNET_snprintf (fname, len, "%s/whitelist", shome));
   if (GNUNET_YES == GNUNET_DISK_file_test (fname))
   {
     mode = ACCESS_ALLOW;
@@ -229,12 +232,13 @@ run (void *cls, char *const *args, const
     GNUNET_free (shome);
     return;
   }
-  GNUNET_assert (0 < GNUNET_snprintf (fname, PATH_MAX, "%s/blacklist", shome));
+  GNUNET_assert (0 < GNUNET_snprintf (fname, len, "%s/blacklist", shome));
   if (GNUNET_YES == GNUNET_DISK_file_test (fname))
   {
     mode = ACCESS_DENY;
     setup_ac (shome, c);
   }
+  GNUNET_free (fname);
   GNUNET_free (shome);
   return;
 }
Index: gnunet-0.10.1/src/testbed/gnunet-helper-testbed.c
===================================================================
--- gnunet-0.10.1.orig/src/testbed/gnunet-helper-testbed.c
+++ gnunet-0.10.1/src/testbed/gnunet-helper-testbed.c
@@ -422,12 +422,15 @@ tokenizer_cb (void *cls, void *client,
 #ifdef WINDOWS
     GNUNET_assert (0 != SetEnvironmentVariable (GNUNET_TESTING_PREFIX, evstr));
 #else
-    static char evar[2* PATH_MAX];
+    static char *evar = NULL;
+    int len = strlen(GNUNET_TESTING_PREFIX) + 1 + strlen(evstr) + 1;
 
-    GNUNET_assert (0 < GNUNET_snprintf (evar, sizeof (evar),
+    evar = GNUNET_malloc (len);
+    GNUNET_assert (0 < GNUNET_snprintf (evar, len,
                                         GNUNET_TESTING_PREFIX "=%s", evstr));
     putenv (evar);
 #endif
+    GNUNET_free (evar);
     GNUNET_free (evstr);
     evstr = NULL;
   }
@@ -451,12 +454,16 @@ tokenizer_cb (void *cls, void *client,
   LOG_DEBUG ("Staring testbed with config: %s\n", config);
   binary = GNUNET_OS_get_libexec_binary_path ("gnunet-service-testbed");
   {
-    static char evar[2 * PATH_MAX];
+    static char *evar = NULL;
+    int len = strlen(ENV_TESTBED_CONFIG) + 1 + strlen(config) + 1;
+
+    evar = GNUNET_malloc (len);
 
     /* expose testbed configuration through env variable */
-    GNUNET_assert (0 < GNUNET_snprintf (evar, sizeof (evar),
+    GNUNET_assert (0 < GNUNET_snprintf (evar, len,
                                         "%s=%s", ENV_TESTBED_CONFIG, config));
     GNUNET_assert (0 == putenv (evar));
+    GNUNET_free (evar);
     evstr = NULL;
   }
   testbed =

Reply via email to