gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r7210 - GNUnet/src/applications/fs/ecrs


From: gnunet
Subject: [GNUnet-SVN] r7210 - GNUnet/src/applications/fs/ecrs
Date: Sat, 14 Jun 2008 11:27:13 -0600 (MDT)

Author: grothoff
Date: 2008-06-14 11:27:13 -0600 (Sat, 14 Jun 2008)
New Revision: 7210

Modified:
   GNUnet/src/applications/fs/ecrs/helper.c
Log:
fixing svn 1358

Modified: GNUnet/src/applications/fs/ecrs/helper.c
===================================================================
--- GNUnet/src/applications/fs/ecrs/helper.c    2008-06-14 16:57:06 UTC (rev 
7209)
+++ GNUnet/src/applications/fs/ecrs/helper.c    2008-06-14 17:27:13 UTC (rev 
7210)
@@ -26,6 +26,7 @@
  */
 
 #include "platform.h"
+#include <limits.h>
 #include "gnunet_util.h"
 #include "gnunet_ecrs_lib.h"
 #include "ecrs.h"
@@ -272,6 +273,7 @@
   unsigned int j;
   char *renameTo;
   char *ret;
+  size_t max;
   struct stat filestat;
 
   path = GNUNET_strdup (filename);
@@ -284,6 +286,8 @@
   list = EXTRACTOR_getKeywords (l, filename);
   key = EXTRACTOR_extractLast (EXTRACTOR_TITLE, list);
   if (key == NULL)
+    key = EXTRACTOR_extractLast (EXTRACTOR_SOFTWARE, list);
+  if (key == NULL)
     key = EXTRACTOR_extractLast (EXTRACTOR_DESCRIPTION, list);
   if (key == NULL)
     key = EXTRACTOR_extractLast (EXTRACTOR_COMMENT, list);
@@ -330,26 +334,34 @@
     }
   if (mime == NULL)
     {
+      max = strlen (path) + strlen (key) +
+       strlen (DIR_SEPARATOR_STR) + 20;
       renameTo =
-        GNUNET_malloc (strlen (path) + strlen (key) +
-                       strlen (DIR_SEPARATOR_STR) + 20);
-      strcpy (renameTo, path);
-      if (path[strlen (path) - 1] != DIR_SEPARATOR)
-        strcat (renameTo, DIR_SEPARATOR_STR);
-      strcat (renameTo, key);
+        GNUNET_malloc (max);
+      GNUNET_snprintf(renameTo,
+                     max,
+                     "%s%s%.*s",
+                     path,
+                     (path[strlen(path)-1] != DIR_SEPARATOR) ? 
DIR_SEPARATOR_STR : "",
+                     GNUNET_MIN(255, PATH_MAX - strlen(path) - 32),
+                     key);
     }
   else
     {
+      max = strlen (path) + strlen (key) + strlen (mime) +
+       strlen (DIR_SEPARATOR_STR) + 20;
       renameTo =
-        GNUNET_malloc (strlen (path) + strlen (key) + strlen (mime) +
-                       strlen (DIR_SEPARATOR_STR) + 20);
-      strcpy (renameTo, path);
-      if (path[strlen (path) - 1] != DIR_SEPARATOR)
-        strcat (renameTo, DIR_SEPARATOR_STR);
-      strcat (renameTo, key);
-      if (strcasecmp (renameTo + strlen (renameTo) - strlen (mime), mime) !=
-          0)
-        strcat (renameTo, mime);
+        GNUNET_malloc (max);
+      GNUNET_snprintf(renameTo,
+                     max,
+                     "%s%s%.*s%s",
+                     path,
+                     (path[strlen(path)-1] != DIR_SEPARATOR) ? 
DIR_SEPARATOR_STR : "",
+                     GNUNET_MIN(255 - strlen(mime), PATH_MAX - strlen(path) - 
64),
+                     key,
+                     (strcasecmp (renameTo + strlen (renameTo) - strlen 
(mime), mime) != 0) ? mime : "");
+
+
     }
   for (i = strlen (renameTo) - 1; i >= 0; i--)
     if (!isprint (renameTo[i]))





reply via email to

[Prev in Thread] Current Thread [Next in Thread]