[Top][All Lists]
[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]))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r7210 - GNUnet/src/applications/fs/ecrs,
gnunet <=