From 02b6820a3dbde269e0b29e3960ddc5a3375b3eb3 Mon Sep 17 00:00:00 2001 From: Arjan van de Ven Date: Tue, 30 Aug 2022 14:30:34 +0000 Subject: [PATCH] deal with two error cases --- src/diff.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/diff.c b/src/diff.c index de77273..b2a6a65 100644 --- a/src/diff.c +++ b/src/diff.c @@ -445,7 +445,7 @@ int make_bsdiff_delta(char *old_filename, char *new_filename, char *delta_filena memset(&small_header, 0, sizeof(struct header_v21)); memcpy(&small_header.magic, BSDIFF_HDR_FULLDL, 8); - efd = open(delta_filename, O_CREAT | O_EXCL | O_WRONLY, 00644); + efd = open(delta_filename_unique, O_CREAT | O_EXCL | O_WRONLY, 00644); if (efd < 0) { close(fd); return -1; @@ -462,6 +462,7 @@ int make_bsdiff_delta(char *old_filename, char *new_filename, char *delta_filena } fclose(pf); close(fd); + rename(delta_filename_unique, delta_filename); return 1; } @@ -527,7 +528,7 @@ int make_bsdiff_delta(char *old_filename, char *new_filename, char *delta_filena memset(&small_header, 0, sizeof(struct header_v21)); memcpy(&small_header.magic, BSDIFF_HDR_FULLDL, 8); - efd = open(delta_filename, O_CREAT | O_EXCL | O_WRONLY, 00644); + efd = open(delta_filename_unique, O_CREAT | O_EXCL | O_WRONLY, 00644); if (efd < 0) { close(fd); munmap(old_data, old_size); @@ -553,6 +554,7 @@ int make_bsdiff_delta(char *old_filename, char *new_filename, char *delta_filena close(fd); munmap(old_data, old_size); free(I); + rename(delta_filename_unique, delta_filename); return 1; }