From 70417fda9ec601327ff654400ffcac9fce6c93e0 Mon Sep 17 00:00:00 2001 From: Thomas Haller Date: Thu, 20 Oct 2022 12:02:45 +0200 Subject: [PATCH] glib-aux: handle errors from close() in nm_utils_file_set_contents() glib's g_file_set_contents() also does that. --- src/libnm-glib-aux/nm-io-utils.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/libnm-glib-aux/nm-io-utils.c b/src/libnm-glib-aux/nm-io-utils.c index b4bf30a8d4..d143059561 100644 --- a/src/libnm-glib-aux/nm-io-utils.c +++ b/src/libnm-glib-aux/nm-io-utils.c @@ -352,6 +352,7 @@ nm_utils_file_set_contents(const char *filename, int errsv; gssize s; int fd; + int r; g_return_val_if_fail(filename, FALSE); g_return_val_if_fail(contents || !length, FALSE); @@ -415,7 +416,16 @@ nm_utils_file_set_contents(const char *filename, tmp_name); } - nm_close(fd); + r = nm_close_with_error(fd); + if (r < 0) { + errsv = NM_ERRNO_NATIVE(-r); + unlink(tmp_name); + return _get_contents_error(error, + errsv, + out_errsv, + "failed close() after writing file %s", + tmp_name); + } if (rename(tmp_name, filename)) { errsv = NM_ERRNO_NATIVE(errno);