Because mkstemp() create a file with mode 0600, only user doing
the commit (typically root) will be allowed to inspect the content
of the file after uci commit.

Signed-off-by: Alin Nastac <alin.nas...@gmail.com>
---
 file.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/file.c b/file.c
index 3ac49c6..6486de9 100644
--- a/file.c
+++ b/file.c
@@ -724,6 +724,7 @@ static void uci_file_commit(struct uci_context *ctx, struct 
uci_package **packag
        char *volatile name = NULL;
        char *volatile path = NULL;
        char *filename = NULL;
+       struct stat statbuf;
        volatile bool do_rename = false;
        int fd;
 
@@ -801,7 +802,7 @@ done:
        uci_close_stream(f1);
        if (do_rename) {
                path = realpath(p->path, NULL);
-               if (!path || rename(filename, path)) {
+               if (!path || stat(path, &statbuf) || chmod(filename, 
statbuf.st_mode) || rename(filename, path)) {
                        unlink(filename);
                        UCI_THROW(ctx, UCI_ERR_IO);
                }
-- 
2.7.4


_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to