File: 0001-Bug-29915-CLO_EXEC.patch

package info (click to toggle)
libnss-extrausers 0.6-4.1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 232 kB
  • sloc: ansic: 2,735; makefile: 117
file content (78 lines) | stat: -rw-r--r-- 2,378 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
From 7fff46e1778ab85c7767dfe96dfa67877502d377 Mon Sep 17 00:00:00 2001
From: Philipp Hahn <hahn@univention.de>
Date: Thu, 21 Jul 2016 09:42:45 +0200
Subject: Bug #29915: CLO_EXEC

Open files CLO_EXEC for process safety.
---
 group.c  | 6 +++---
 passwd.c | 4 ++--
 shadow.c | 2 +-
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/group.c b/group.c
index 41b72d3..e523064 100644
--- a/group.c
+++ b/group.c
@@ -213,7 +213,7 @@ static inline enum nss_status g_search(FILE *stream, const char *name, const gid
 
 
 enum nss_status _nss_extrausers_setgrent(void) {
-	groupsfile = fopen(GROUPSFILE, "r");
+	groupsfile = fopen(GROUPSFILE, "re");
 	if (groupsfile == NULL)
 		return NSS_STATUS_UNAVAIL;
 	return NSS_STATUS_SUCCESS;
@@ -245,7 +245,7 @@ enum nss_status _nss_extrausers_getgrnam_r(const char *name, struct group *gr, c
 	if (gr == NULL || name == NULL)
 		return NSS_STATUS_UNAVAIL;
 
-	f = fopen(GROUPSFILE, "r");
+	f = fopen(GROUPSFILE, "re");
 	if (f == NULL) {
 		*errnop = errno;
 		return NSS_STATUS_UNAVAIL;
@@ -265,7 +265,7 @@ enum nss_status _nss_extrausers_getgrgid_r(const gid_t gid, struct group *gr, ch
 	if (gid == 0 || gid < MINGID)
 		return NSS_STATUS_NOTFOUND;
 
-	f = fopen(GROUPSFILE, "r");
+	f = fopen(GROUPSFILE, "re");
 	if (f == NULL) {
 		*errnop = errno;
 		return NSS_STATUS_UNAVAIL;
diff --git a/passwd.c b/passwd.c
index 88cb1b7..bb97c52 100644
--- a/passwd.c
+++ b/passwd.c
@@ -73,7 +73,7 @@ static inline enum nss_status p_search(FILE *f, const char *name, const uid_t ui
 	char *t_name, *t_passwd, *t_gecos, *t_shell, *t_dir;
 
 	if (stream == NULL) {
-		stream = fopen(USERSFILE, "r");
+		stream = fopen(USERSFILE, "re");
 		if (stream == NULL) {
 			*errnop = errno;
 			return NSS_STATUS_UNAVAIL;
@@ -209,7 +209,7 @@ enum nss_status _nss_extrausers_setpwent(void) {
 		fclose(usersfile);
 		usersfile = NULL;
 	}
-	usersfile = fopen(USERSFILE, "r");
+	usersfile = fopen(USERSFILE, "re");
 	if (usersfile == NULL)
 	{
 		return NSS_STATUS_UNAVAIL;
diff --git a/shadow.c b/shadow.c
index 9685174..625ac98 100644
--- a/shadow.c
+++ b/shadow.c
@@ -61,7 +61,7 @@ enum nss_status _nss_extrausers_getspnam_r(const char *name, struct spwd *spw, c
 		return NSS_STATUS_UNAVAIL;
 	}
 
-	stream = fopen(SHADOWFILE, "r");
+	stream = fopen(SHADOWFILE, "re");
 	if( stream == NULL ) {
 		*errnop = errno;
 		return NSS_STATUS_UNAVAIL;