X-Git-Url: http://git.archive.openwrt.org/?p=project%2Fuci.git;a=blobdiff_plain;f=history.c;h=e3e19de4e60dc0ce4a0e238df30b275796038ff9;hp=a31dbfaf1cb23d5ed196e4f6cbc66daf0a4ea042;hb=c60702b55cf8efe9dcd359fc9aa8e9c7cd421ada;hpb=cfdea3894f809aada2cf10ba2914aebe8b92316d diff --git a/history.c b/history.c index a31dbfa..e3e19de 100644 --- a/history.c +++ b/history.c @@ -250,7 +250,10 @@ static int uci_load_history(struct uci_context *ctx, struct uci_package *p, bool changes = uci_load_history_file(ctx, p, filename, &f, flush); if (flush && f && (changes > 0)) { rewind(f); - ftruncate(fileno(f), 0); + if (ftruncate(fileno(f), 0) < 0) { + uci_close_stream(f); + UCI_THROW(ctx, UCI_ERR_IO); + } } if (filename) free(filename); @@ -308,7 +311,8 @@ static void uci_filter_history(struct uci_context *ctx, const char *name, const /* rebuild the history file */ rewind(f); - ftruncate(fileno(f), 0); + if (ftruncate(fileno(f), 0) < 0) + UCI_THROW(ctx, UCI_ERR_IO); uci_foreach_element_safe(&list, tmp, e) { fprintf(f, "%s\n", e->name); uci_free_element(e);