diff options
Diffstat (limited to 'src/fs')
-rw-r--r-- | src/fs/fs_directory.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/fs/fs_directory.c b/src/fs/fs_directory.c index 03065958e..6698ad010 100644 --- a/src/fs/fs_directory.c +++ b/src/fs/fs_directory.c | |||
@@ -201,10 +201,16 @@ GNUNET_FS_directory_list_contents (size_t size, | |||
201 | struct GNUNET_CONTAINER_MetaData *md; | 201 | struct GNUNET_CONTAINER_MetaData *md; |
202 | char *filename; | 202 | char *filename; |
203 | 203 | ||
204 | if ( (offset == 0) && | ||
205 | ( (size < 8 + sizeof (uint32_t)) || | ||
206 | (0 != memcmp (cdata, GNUNET_FS_DIRECTORY_MAGIC, 8)) ) ) | ||
207 | { | ||
208 | GNUNET_log (GNUNET_ERROR_TYPE_WARNING, | ||
209 | _("MAGIC mismatch. This is not a GNUnet directory.\n")); | ||
210 | return GNUNET_SYSERR; | ||
211 | } | ||
204 | pos = offset; | 212 | pos = offset; |
205 | if ( (pos == 0) && | 213 | if (offset == 0) |
206 | (size >= 8 + sizeof (uint32_t)) && | ||
207 | (0 == memcmp (cdata, GNUNET_FS_DIRECTORY_MAGIC, 8)) ) | ||
208 | { | 214 | { |
209 | memcpy (&mdSize, &cdata[8], sizeof (uint32_t)); | 215 | memcpy (&mdSize, &cdata[8], sizeof (uint32_t)); |
210 | mdSize = ntohl (mdSize); | 216 | mdSize = ntohl (mdSize); |