X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fuci.git;a=blobdiff_plain;f=file.c;fp=file.c;h=7e1e4e6f0ddcdbb545c4e83efda52fb33031374a;hp=35755d83ad8c04dc016d1045e9c3ae4f44b0354c;hb=ec96e1f93d6d0faa3f3c40f6bcbc0006550281a8;hpb=18c13247f9e0bfad1effc0445bcda436d03789c5 diff --git a/file.c b/file.c index 35755d8..7e1e4e6 100644 --- a/file.c +++ b/file.c @@ -800,9 +800,13 @@ done: free(name); free(path); uci_close_stream(f1); - if (do_rename && rename(filename, p->path)) { - unlink(filename); - UCI_THROW(ctx, UCI_ERR_IO); + if (do_rename) { + path = realpath(p->path, NULL); + if (!path || rename(filename, path)) { + unlink(filename); + UCI_THROW(ctx, UCI_ERR_IO); + } + free(path); } free(filename); if (ctx->err)