blob: 95ca03b223d81eb7cd10a26051cbd5d603a57434 [file] [log] [blame]
Andrew Geissler595f6302022-01-24 19:11:47 +00001From 56bec31c4117fddee3a141bcca6c585aa8ddbbe2 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Wed, 14 Jul 2021 18:08:30 -0700
4Subject: [PATCH] correct signature of closefrom() API
5
6glibc 2.34 introduced this function and finds this error which has been
7all along.
8
9Upstream-Status: Pending
10
11Signed-off-by: Khem Raj <raj.khem@gmail.com>
12---
13 src/util/sys_compat.c | 6 +++---
14 src/util/sys_defs.h | 12 ++++++------
15 2 files changed, 9 insertions(+), 9 deletions(-)
16
17diff --git a/src/util/sys_compat.c b/src/util/sys_compat.c
18index 8bf8e58..c87f043 100644
19--- a/src/util/sys_compat.c
20+++ b/src/util/sys_compat.c
21@@ -286,7 +286,7 @@ int dup2_pass_on_exec(int oldd, int newd)
22
23 /* closefrom() - closes all file descriptors from the given one up */
24
25-int closefrom(int lowfd)
26+void closefrom(int lowfd)
27 {
28 int fd_limit = open_limit(0);
29 int fd;
30@@ -298,14 +298,14 @@ int closefrom(int lowfd)
31 */
32 if (lowfd < 0) {
33 errno = EBADF;
34- return (-1);
35+ return;
36 }
37 if (fd_limit > 500)
38 fd_limit = 500;
39 for (fd = lowfd; fd < fd_limit; fd++)
40 (void) close(fd);
41
42- return (0);
43+ return;
44 }
45
46 #endif
47diff --git a/src/util/sys_defs.h b/src/util/sys_defs.h
48index 2e1c953..515de6c 100644
49--- a/src/util/sys_defs.h
50+++ b/src/util/sys_defs.h
51@@ -1509,7 +1509,7 @@ extern int setsid(void);
52 #endif
53
54 #ifndef HAS_CLOSEFROM
55-extern int closefrom(int);
56+extern void closefrom(int);
57
58 #endif
59
60@@ -1563,7 +1563,7 @@ typedef int pid_t;
61
62 /*
63 * Clang-style attribute tests.
64- *
65+ *
66 * XXX Without the unconditional test below, gcc 4.6 will barf on ``elif
67 * defined(__clang__) && __has_attribute(__whatever__)'' with error message
68 * ``missing binary operator before token "("''.
69@@ -1577,7 +1577,7 @@ typedef int pid_t;
70 * warn for missing initializations and other trouble. However, OPENSTEP4
71 * gcc 2.7.x cannot handle this so we define this only if NORETURN isn't
72 * already defined above.
73- *
74+ *
75 * Data point: gcc 2.7.2 has __attribute__ (Wietse Venema) but gcc 2.6.3 does
76 * not (Clive Jones). So we'll set the threshold at 2.7.
77 */
78@@ -1653,12 +1653,12 @@ typedef int pid_t;
79 * write to output parameters (for example, stat- or scanf-like functions)
80 * or from functions that have other useful side effects (for example,
81 * fseek- or rename-like functions).
82- *
83+ *
84 * DO NOT use this for functions that write to a stream; it is entirely
85 * legitimate to detect write errors with fflush() or fclose() only. On the
86 * other hand most (but not all) functions that read from a stream must
87 * never ignore result values.
88- *
89+ *
90 * XXX Prepending "(void)" won't shut up GCC. Clang behaves as expected.
91 */
92 #if ((__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || __GNUC__ > 3)
93@@ -1739,7 +1739,7 @@ typedef const char *CONST_CHAR_STAR;
94 * Safety. On some systems, ctype.h misbehaves with non-ASCII or negative
95 * characters. More importantly, Postfix uses the ISXXX() macros to ensure
96 * protocol compliance, so we have to rule out non-ASCII characters.
97- *
98+ *
99 * XXX The (unsigned char) casts in isalnum() etc arguments are unnecessary
100 * because the ISASCII() guard already ensures that the values are
101 * non-negative; the casts are done anyway to shut up chatty compilers.
102--
1032.17.1
104