aboutsummaryrefslogtreecommitdiff
path: root/src/util/disk.c
diff options
context:
space:
mode:
authorDavid Barksdale <amatus.amongus@gmail.com>2015-08-17 02:55:38 +0000
committerDavid Barksdale <amatus.amongus@gmail.com>2015-08-17 02:55:38 +0000
commit01d39499bb3af0674917c7dabb3b202427273ba8 (patch)
tree50a401b537d52066dbf2252622b4092cfe036f39 /src/util/disk.c
parent40e5419b8db86bfb9a0bb5eba083e9a97e9dd9e9 (diff)
downloadgnunet-01d39499bb3af0674917c7dabb3b202427273ba8.tar.gz
gnunet-01d39499bb3af0674917c7dabb3b202427273ba8.zip
The empty path is invalid
If GNUNET_DISK_directory_create_for_file() is called with a path like "/foo" then we will pass the empty path to GNUNET_DISK_directory_create() and access(). The latter will always return ENOENT.
Diffstat (limited to 'src/util/disk.c')
-rw-r--r--src/util/disk.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/util/disk.c b/src/util/disk.c
index 04bed6cc9..bd766a1b9 100644
--- a/src/util/disk.c
+++ b/src/util/disk.c
@@ -823,6 +823,11 @@ GNUNET_DISK_directory_create_for_file (const char *filename)
823 while ((len > 0) && (rdir[len] != DIR_SEPARATOR)) 823 while ((len > 0) && (rdir[len] != DIR_SEPARATOR))
824 len--; 824 len--;
825 rdir[len] = '\0'; 825 rdir[len] = '\0';
826 /* The empty path is invalid and in this case refers to / */
827 if (0 == len) {
828 GNUNET_free (rdir);
829 rdir = GNUNET_strdup ("/");
830 }
826 ret = GNUNET_DISK_directory_create (rdir); 831 ret = GNUNET_DISK_directory_create (rdir);
827 if ((ret == GNUNET_OK) && (0 != ACCESS (rdir, W_OK))) 832 if ((ret == GNUNET_OK) && (0 != ACCESS (rdir, W_OK)))
828 ret = GNUNET_NO; 833 ret = GNUNET_NO;