Your message dated Fri, 11 May 2012 08:05:37 +0200
with message-id <[email protected]>
and subject line no longer reproduceable
has caused the Debian Bug report #644657,
regarding libmemcached: FTBFS on hurd-i386
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
644657: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=644657
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: libmemcached
Version: 0.44-1.1
Severity: important
Tags: patch
User: [email protected]
Usertags: hurd

Hi,

libmemcached FTBFS mainly due to PATH_MAX issues on GNU/Hurd. The
attached patch resolves these problems, and enables a portable solution for all
architectures.

Thanks!
diff -ur libmemcached-0.44/clients/ms_conn.c libmemcached-0.44.modified//clients/ms_conn.c
--- libmemcached-0.44/clients/ms_conn.c	2010-07-22 17:06:58.000000000 +0200
+++ libmemcached-0.44.modified//clients/ms_conn.c	2011-09-26 21:47:14.000000000 +0200
@@ -2125,6 +2125,9 @@
     limit_to_mtu= c->udp;
 
     /* We may need to start a new msghdr if this one is full. */
+#ifndef IOV_MAX
+#define IOV_MAX 1024
+#endif
     if ((m->msg_iovlen == IOV_MAX)
         || (limit_to_mtu && (c->msgbytes >= UDP_MAX_SEND_PAYLOAD_SIZE)))
     {
diff -ur libmemcached-0.44/clients/ms_setting.c libmemcached-0.44.modified//clients/ms_setting.c
--- libmemcached-0.44/clients/ms_setting.c	2010-08-03 02:34:02.000000000 +0200
+++ libmemcached-0.44.modified//clients/ms_setting.c	2011-10-05 18:17:52.000000000 +0200
@@ -304,13 +304,17 @@
  */
 static void ms_no_config_file()
 {
-  char userpath[PATH_MAX];
+  char *userpath= NULL;
+  size_t len;
   struct passwd *usr= NULL;
   FILE *fd;
 
   usr= getpwuid(getuid());
 
-  snprintf(userpath, PATH_MAX, "%s/%s", usr->pw_dir, DEFAULT_CONFIG_NAME);
+  len= strlen(usr->pw_dir) + 1 + strlen(DEFAULT_CONFIG_NAME) + 1;
+  if ((userpath = malloc(len)) == NULL)
+      exit(1);
+  snprintf(userpath, len, "%s/%s", usr->pw_dir, DEFAULT_CONFIG_NAME);
 
   if (access (userpath, F_OK | R_OK) == 0)
     goto exit;
@@ -321,6 +325,7 @@
   {
     fprintf(stderr, "Could not create default configure file %s\n", userpath);
     perror(strerror(errno));
+    free(userpath);
     exit(1);
   }
   fprintf(fd, "%s", DEFAULT_CONGIF_STR);
@@ -328,6 +333,7 @@
 
 exit:
   ms_setting.cfg_file= strdup(userpath);
+  free(userpath);
 } /* ms_no_config_file */
 
 
--- libmemcached-0.44/tests/server.c	2010-08-03 08:30:54.000000000 +0200
+++ libmemcached-0.44.modified/tests/server.c	2011-10-05 19:08:08.000000000 +0200
@@ -117,18 +117,30 @@
           }
         }
 
-        char buffer[PATH_MAX];
-        snprintf(buffer, sizeof(buffer), PID_FILE_BASE, x);
+        char *buffer= NULL;
+        size_t len= 0;
+
+        len= strlen(PID_FILE_BASE) + sizeof(int) - 2 + 1;
+        if ((buffer = malloc(len)) == NULL)
+            assert(buffer);
+        snprintf(buffer, len, PID_FILE_BASE, x);
         kill_file(buffer);
 
         if (x == 0)
         {
-          snprintf(buffer, sizeof(buffer), "%s -d -u root -P "PID_FILE_BASE" -t 1 -p %u -U %u -m 128",
+          len= strlen("%s -d -u root -P "PID_FILE_BASE" -t 1 -p %u -U %u -m 128") + strlen(MEMCACHED_BINARY) + 3*sizeof(int) - 4*2 + 1;
+        if ((buffer = malloc(len)) == NULL)
+            assert(buffer);
+          snprintf(buffer, len, "%s -d -u root -P "PID_FILE_BASE" -t 1 -p %u -U %u -m 128",
                    MEMCACHED_BINARY, x, port, port);
         }
         else
         {
-          snprintf(buffer, sizeof(buffer), "%s -d -u root -P "PID_FILE_BASE" -t 1 -p %u -U %u",
+          len= strlen("%s -d -u root -P "PID_FILE_BASE" -t 1 -p %u -U %u") +
+	    strlen(MEMCACHED_BINARY) + 3*sizeof(int) - 4*2 + 1;
+        if ((buffer = malloc(len)) == NULL)
+            assert(buffer);
+          snprintf(buffer, len, "%s -d -u root -P "PID_FILE_BASE" -t 1 -p %u -U %u",
                    MEMCACHED_BINARY, x, port, port);
         }
 	if (libmemcached_util_ping("localhost", port, NULL))
@@ -142,6 +154,7 @@
 	}
         count= sprintf(end_ptr, "localhost:%u,", port);
         end_ptr+= count;
+        free(buffer);
       }
       *end_ptr= 0;
 
@@ -149,9 +162,13 @@
       int *pids= calloc(construct->count, sizeof(int));
       for (uint32_t x= 0; x < construct->count; x++)
       {
-        char buffer[PATH_MAX]; /* Nothing special for number */
+        char *buffer= NULL; /* Nothing special for number */
+        size_t len= 0;
 
-        snprintf(buffer, sizeof(buffer), PID_FILE_BASE, x);
+        len= strlen(PID_FILE_BASE) + sizeof(int) - 2 + 1;
+        if ((buffer= malloc(len)) == NULL)
+          assert(buffer);
+        snprintf(buffer, len, PID_FILE_BASE, x);
 
         uint32_t counter= 3000; // Absurd, just to catch run away process
         while (pids[x] <= 0  && --counter)
@@ -198,8 +215,10 @@
             if (pids[y] > 0)
               kill(pids[y], SIGTERM);
           }
+          free(buffer);
           abort();
         }
+        free(buffer);
       }
       free(pids);
 
@@ -229,9 +248,15 @@
   {
     for (uint32_t x= 0; x < construct->count; x++)
     {
-      char file_buffer[PATH_MAX]; /* Nothing special for number */
-      snprintf(file_buffer, sizeof(file_buffer), PID_FILE_BASE, x);
+      char *file_buffer=NULL; /* Nothing special for number */
+      size_t len= 0;
+
+      len= strlen(PID_FILE_BASE) + sizeof(int) - 2 + 1;
+      if ((file_buffer = malloc(len)) == NULL)
+        assert(file_buffer);
+      snprintf(file_buffer, len, PID_FILE_BASE, x);
       kill_file(file_buffer);
+      free(file_buffer);
     }
 
     free(construct->server_list);

--- End Message ---
--- Begin Message ---
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Closing it after one month passed without further reports.
- -- 
Michael Fladischer <[email protected]>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk+srCsACgkQeJ3z1zFMUGb7tACdH2pAkolk/yWhWhNQTAafuzc8
ungAnAk25jvawT2oF1bON/yPj61X4Z3O
=fYuw
-----END PGP SIGNATURE-----


--- End Message ---

Reply via email to