aboutsummaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/pseudo/pseudo-1.6.2/0001-pseudo_client.c-protect-pwd_lck-against-magic.patch
blob: d0c0a27e54f831052ce7268352d59c55c99a9d95 (plain)
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
From e11468a47369596f57c5e99bd0a3dd58b2c6d5e0 Mon Sep 17 00:00:00 2001
From: "Peter A. Bigot" <pab@pabigot.com>
Date: Sun, 12 Oct 2014 08:27:14 -0500
Subject: [PATCH 1/3] pseudo_client.c: protect pwd_lck against magic

While attempting to diagnose unexpected uid/gid assignment I added
--without-passwd-fallback to the pseudo build.  This caused build
failures due to inability to lock /etc/passwd.

Instrumentation revealed that attempts to create the lock file ended up
with pseudo_etc_file() creating the correct lock name, but the
subsequent open had an extra PSEUDO_PASSWD directory prefix causing
it to fail.

Inspection of pseudo_client shows the only other use of PSEUDO_ETC_FILE
to be protected against magic.  Applying the same shield to the
unprotected calls in pseudo_pwd_lck_{open,close} fixes the issue.

Upstream-Status: Pending
Signed-off-by: Peter A. Bigot <pab@pabigot.com>
---
 pseudo_client.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/pseudo_client.c b/pseudo_client.c
index 8deaa1b..442dd19 100644
--- a/pseudo_client.c
+++ b/pseudo_client.c
@@ -416,20 +416,24 @@ pseudo_pwd_lck_open(void) {
 		}
 	}
 	pseudo_pwd_lck_close();
+	pseudo_antimagic();
 	pseudo_pwd_lck_fd = PSEUDO_ETC_FILE(".pwd.lock",
 					pseudo_pwd_lck_name, O_RDWR | O_CREAT);
+	pseudo_magic();
 	return pseudo_pwd_lck_fd;
 }
 
 int
 pseudo_pwd_lck_close(void) {
 	if (pseudo_pwd_lck_fd != -1) {
+		pseudo_antimagic();
 		close(pseudo_pwd_lck_fd);
 		if (pseudo_pwd_lck_name) {
 			unlink(pseudo_pwd_lck_name);
 			free(pseudo_pwd_lck_name);
 			pseudo_pwd_lck_name = 0;
 		}
+		pseudo_magic();
 		pseudo_pwd_lck_fd = -1;
 		return 0;
 	} else {
-- 
1.8.5.5