[OpenWrt-Devel] [PATCH][uci] file: preserve original file mode after commit
Alin Nastac
alin.nastac at gmail.com
Fri Apr 24 10:49:55 EDT 2020
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.nastac at 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 at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel
More information about the openwrt-devel
mailing list