diff options
| author | Namhyung Kim <namhyung@gmail.com> | 2013-09-29 19:11:37 +0900 |
|---|---|---|
| committer | Karel Zak <kzak@redhat.com> | 2013-09-30 13:41:12 +0200 |
| commit | 1dbaf5cc72a7af5a2ee4692366a74acb960203fe (patch) | |
| tree | 35624edcfdbceda84d3ef0f48856eb13af10d59e | |
| parent | 0b567ae5507f8e990452024ffe561457203b627b (diff) | |
| download | util-linux-1dbaf5cc72a7af5a2ee4692366a74acb960203fe.tar.gz | |
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 <namhyung@gmail.com>
| -rw-r--r-- | libmount/src/utils.c | 4 |
1 files changed, 3 insertions, 1 deletions
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; } /** |
