From e11468a47369596f57c5e99bd0a3dd58b2c6d5e0 Mon Sep 17 00:00:00 2001 From: "Peter A. Bigot" 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 --- 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