]> git.ipfire.org Git - thirdparty/rrdtool-1.x.git/commitdiff
fix missing realpath 453/head
authorlaiwei <laiwei.ustc@gmail.com>
Tue, 11 Mar 2014 07:49:21 +0000 (15:49 +0800)
committerlaiwei <laiwei.ustc@gmail.com>
Tue, 11 Mar 2014 07:49:21 +0000 (15:49 +0800)
src/rrd_daemon.c

index 4206fb4fb78e00a810d59efc78fa088286b3eef3..0bc40a6b154fb191dba6176816d28f70f035903a 100644 (file)
@@ -1930,13 +1930,15 @@ static int handle_request_create (HANDLER_PROTO) /* {{{ */
   RRDD_LOG(LOG_INFO, "rrdcreate request for %s",file);
 
   dir = dirname(file_copy);
-  if (!config_allow_recursive_mkdir) {
-      return send_response(sock, RESP_ERR,
-          "No permission to recursively create: %s\nDid you pass -R to the daemon?\n",
-          dir);
-  }
-  if (rrd_mkdir_p(dir, 0755) != 0) {
-      return send_response(sock, RESP_ERR, "Cannot create: %s\n", dir);
+  if (realpath(dir, dir_tmp) == NULL && errno == ENOENT) {
+    if (!config_allow_recursive_mkdir) {
+        return send_response(sock, RESP_ERR,
+            "No permission to recursively create: %s\nDid you pass -R to the daemon?\n",
+            dir);
+    }
+    if (rrd_mkdir_p(dir, 0755) != 0) {
+        return send_response(sock, RESP_ERR, "Cannot create: %s\n", dir);
+    }
   }
   free(file_copy);