]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
support: Also return fd when it is 0
authorSiddhesh Poyarekar <siddhesh@sourceware.org>
Wed, 6 Oct 2021 16:18:35 +0000 (21:48 +0530)
committerSiddhesh Poyarekar <siddhesh@sourceware.org>
Wed, 6 Oct 2021 16:56:05 +0000 (22:26 +0530)
The fd validity check in open_dev_null checks if fd > 0, which would
lead to a leaked fd if it is == 0.

Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
(cherry picked from commit 27b6edbb090f736b101f569620d8ad0e7217ddf8)

support/support-open-dev-null-range.c

index 80d9dba50402ce1239ebb9b0ed9793be402d142c..66a850410557351b2525a193783819cc75eab55f 100644 (file)
@@ -40,16 +40,16 @@ increase_nofile (void)
 static int
 open_dev_null (int flags, mode_t mode)
 {
- int fd = open64 ("/dev/null", flags, mode);
if (fd > 0)
-   return fd;
 int fd = open64 ("/dev/null", flags, mode);
 if (fd >= 0)
+    return fd;
 
- if (fd < 0 && errno != EMFILE)
-   FAIL_EXIT1 ("open64 (\"/dev/null\", 0x%x, 0%o): %m", flags, mode);
 if (fd < 0 && errno != EMFILE)
+    FAIL_EXIT1 ("open64 (\"/dev/null\", 0x%x, 0%o): %m", flags, mode);
 
- increase_nofile ();
 increase_nofile ();
 
- return xopen ("/dev/null", flags, mode);
 return xopen ("/dev/null", flags, mode);
 }
 
 struct range