uci: fix memory leak in rpc_uci_replace_savedir()
[project/rpcd.git] / main.c
diff --git a/main.c b/main.c
index 5a608c2..7c161b5 100644 (file)
--- a/main.c
+++ b/main.c
@@ -2,7 +2,7 @@
  * rpcd - UBUS RPC server
  *
  *   Copyright (C) 2013 Felix Fietkau <nbd@openwrt.org>
- *   Copyright (C) 2013 Jo-Philipp Wich <jow@openwrt.org>
+ *   Copyright (C) 2013-2014 Jo-Philipp Wich <jow@openwrt.org>
  *
  * Permission to use, copy, modify, and/or distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -22,6 +22,7 @@
 #include <libubox/blobmsg_json.h>
 #include <libubus.h>
 #include <signal.h>
+#include <sys/stat.h>
 
 #include <rpcd/session.h>
 #include <rpcd/uci.h>
@@ -58,6 +59,7 @@ exec_self(int argc, char **argv)
 
 int main(int argc, char **argv)
 {
+       struct stat s;
        const char *hangup;
        const char *ubus_socket = NULL;
        int ch;
@@ -72,6 +74,11 @@ int main(int argc, char **argv)
                }
        }
 
+       if (stat(RPC_UCI_DIR_PREFIX, &s))
+               mkdir(RPC_UCI_DIR_PREFIX, 0700);
+
+       umask(0077);
+
        signal(SIGPIPE, SIG_IGN);
        signal(SIGHUP,  handle_signal);
        signal(SIGUSR1, handle_signal);