aboutsummaryrefslogtreecommitdiff
path: root/src/namecache/plugin_namecache_flat.c
diff options
context:
space:
mode:
authordaniel <daniel@140774ce-b5e7-0310-ab8b-a85725594a96>2015-12-06 02:01:44 +0000
committerdaniel <daniel@140774ce-b5e7-0310-ab8b-a85725594a96>2015-12-06 02:01:44 +0000
commit18bea408aae2995bfa7735fbee773674edcd2b56 (patch)
tree6f5d10941ac7a33265ea3fd755dfb12aa9516f18 /src/namecache/plugin_namecache_flat.c
parent1cbc3de180db39a3f7fadd57df051d76f5b5d0f4 (diff)
namecache: fix NULL-pointer dereference in namecache-flatgnunet
namecache-flat crashes if started on an empty or non-existent file. gnunet-service-[2568]: segfault at 0 ip 00007fe32dc8bb3c sp 00007ffde11826f0 error 4 in libgnunet_plugin_namecache_flat.so[7fe32dc8a000+202000] gnunet-service-[2576]: segfault at 0 ip 00007f2a6be75b3c sp 00007ffdf9b6d880 error 4 in libgnunet_plugin_namecache_flat.so[7f2a6be74000+202000] gnunet-service-[2581]: segfault at 0 ip 00007ff1dcfb1b3c sp 00007fff834070f0 error 4 in libgnunet_plugin_namecache_flat.so[7ff1dcfb0000+202000] This fix at least prevents parsing a 0-byte file, however, looking at the code it is clear that more needs to be done to prevent crashes in case of corrupted or incompletely written cache data. Fixes https://gnunet.org/bugs/view.php?id=4082 Signed-off-by: Daniel Golle <daniel@makrotopia.org> git-svn-id: https://gnunet.org/svn/gnunet@36735 140774ce-b5e7-0310-ab8b-a85725594a96
Diffstat (limited to 'src/namecache/plugin_namecache_flat.c')
-rw-r--r--src/namecache/plugin_namecache_flat.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/namecache/plugin_namecache_flat.c b/src/namecache/plugin_namecache_flat.c
index 409b05802d..85bb69237d 100644
--- a/src/namecache/plugin_namecache_flat.c
+++ b/src/namecache/plugin_namecache_flat.c
@@ -132,6 +132,9 @@ database_setup (struct Plugin *plugin)
return GNUNET_SYSERR;
}
+ if (0 == size)
+ return GNUNET_OK;
+
buffer = GNUNET_malloc (size);
if (GNUNET_SYSERR == GNUNET_DISK_file_read (fh,