diff options
author | Junio C Hamano <gitster@pobox.com> | 2013-07-22 11:23:12 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-07-22 11:23:13 -0700 |
commit | 1d1934caf1c927cb12cd76aa6ced9eab51a3d435 (patch) | |
tree | 7221825fc2700eb3b743335c2dc2b55e22b4d0c8 | |
parent | 6a5b9ce5e12f039b126b1c97be7ba1b63ace5149 (diff) | |
parent | a77f106c7837faf6a712ea3ac720f5c4fa2feb07 (diff) | |
download | git-1d1934caf1c927cb12cd76aa6ced9eab51a3d435.tar.gz |
Merge branch 'tr/fd-gotcha-fixes'
Two places we did not check return value (expected to be a file
descriptor) correctly.
* tr/fd-gotcha-fixes:
run-command: dup_devnull(): guard against syscalls failing
git_mkstemps: correctly test return value of open()
-rw-r--r-- | run-command.c | 5 | ||||
-rw-r--r-- | wrapper.c | 2 |
2 files changed, 5 insertions, 2 deletions
diff --git a/run-command.c b/run-command.c index aece872e33..1b7f88eeb1 100644 --- a/run-command.c +++ b/run-command.c @@ -76,7 +76,10 @@ static inline void close_pair(int fd[2]) static inline void dup_devnull(int to) { int fd = open("/dev/null", O_RDWR); - dup2(fd, to); + if (fd < 0) + die_errno(_("open /dev/null failed")); + if (dup2(fd, to) < 0) + die_errno(_("dup2(%d,%d) failed"), fd, to); close(fd); } #endif @@ -322,7 +322,7 @@ int git_mkstemps_mode(char *pattern, int suffix_len, int mode) template[5] = letters[v % num_letters]; v /= num_letters; fd = open(pattern, O_CREAT | O_EXCL | O_RDWR, mode); - if (fd > 0) + if (fd >= 0) return fd; /* * Fatal error (EPERM, ENOSPC etc). |