gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r31363 - gnunet/src/util


From: gnunet
Subject: [GNUnet-SVN] r31363 - gnunet/src/util
Date: Fri, 13 Dec 2013 16:00:33 +0100

Author: grothoff
Date: 2013-12-13 16:00:33 +0100 (Fri, 13 Dec 2013)
New Revision: 31363

Modified:
   gnunet/src/util/disk.c
   gnunet/src/util/network.c
Log:
-fix #3211

Modified: gnunet/src/util/disk.c
===================================================================
--- gnunet/src/util/disk.c      2013-12-13 14:48:10 UTC (rev 31362)
+++ gnunet/src/util/disk.c      2013-12-13 15:00:33 UTC (rev 31363)
@@ -796,7 +796,7 @@
 GNUNET_DISK_directory_create_for_file (const char *filename)
 {
   char *rdir;
-  int len;
+  size_t len;
   int ret;
 
   rdir = GNUNET_STRINGS_filename_expand (filename);

Modified: gnunet/src/util/network.c
===================================================================
--- gnunet/src/util/network.c   2013-12-13 14:48:10 UTC (rev 31362)
+++ gnunet/src/util/network.c   2013-12-13 15:00:33 UTC (rev 31363)
@@ -476,11 +476,41 @@
   if ((desc->af == AF_UNIX) && (NULL != desc->addr))
   {
     const struct sockaddr_un *un = (const struct sockaddr_un *) desc->addr;
+    char *dirname = GNUNET_strndup (un->sun_path,
+                                    sizeof (un->sun_path));
 
-    if (0 != unlink (un->sun_path))
+    if (0 != unlink (dirname))
+    {
       LOG_STRERROR_FILE (GNUNET_ERROR_TYPE_WARNING,
                         "unlink",
-                        un->sun_path);
+                        dirname);
+    }
+    else
+    {
+      size_t len;
+
+      len = strlen (dirname);
+      while ((len > 0) && (dirname[len] != DIR_SEPARATOR))
+        len--;
+      dirname[len] = '\0';
+      if (0 != rmdir (dirname))
+      {
+        switch (errno)
+        {
+        case EACCES:
+        case ENOTEMPTY:
+        case EPERM:
+          /* these are normal and can just be ignored */
+          break;
+        default:
+          GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_WARNING,
+                                    "rmdir",
+                                    dirname);
+          break;
+        }
+      }
+    }
+    GNUNET_free (dirname);
   }
 #endif
   GNUNET_NETWORK_socket_free_memory_only_ (desc);




reply via email to

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