From 1dbaf5cc72a7af5a2ee4692366a74acb960203fe Mon Sep 17 00:00:00 2001 From: Namhyung Kim Date: Sun, 29 Sep 2013 19:11:37 +0900 Subject: [PATCH] libmount: Save errno if mkostemp() failed After mkostemp() failed, umask() and free() might alter the errno to another value. Not sure those calls really changes the errno or not. But let's be more conservative. Signed-off-by: Namhyung Kim --- libmount/src/utils.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libmount/src/utils.c b/libmount/src/utils.c index 3cab936441..7930e29deb 100644 --- a/libmount/src/utils.c +++ b/libmount/src/utils.c @@ -849,6 +849,8 @@ int mnt_open_uniq_filename(const char *filename, char **name) oldmode = umask(S_IRGRP|S_IWGRP|S_IXGRP| S_IROTH|S_IWOTH|S_IXOTH); fd = mkostemp(n, O_RDWR|O_CREAT|O_EXCL|O_CLOEXEC); + if (fd < 0) + fd = -errno; umask(oldmode); if (fd >= 0 && name) @@ -856,7 +858,7 @@ int mnt_open_uniq_filename(const char *filename, char **name) else free(n); - return fd < 0 ? -errno : fd; + return fd; } /** -- 2.47.2