- nss: get shadow_logfd with log_get_logfd() (#2038811)
- lib: make shadow_logfd and Prog not extern - lib: rename Prog to shadow_progname - lib: provide default values for shadow_progname - libsubid: use log_set_progname in subid_init Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
This commit is contained in:
parent
957f0eb09e
commit
77cc4a7c14
2497
shadow-4.9-make-shadow-logfd-and-prog-not-extern.patch
Normal file
2497
shadow-4.9-make-shadow-logfd-and-prog-not-extern.patch
Normal file
File diff suppressed because it is too large
Load Diff
48
shadow-4.9-nss-get-shadow-logfd-with-log-get-logfd.patch
Normal file
48
shadow-4.9-nss-get-shadow-logfd-with-log-get-logfd.patch
Normal file
@ -0,0 +1,48 @@
|
||||
From e101219ad71de11da3fdd1b3ec2620fd1a97b92c Mon Sep 17 00:00:00 2001
|
||||
From: Iker Pedrosa <ipedrosa@redhat.com>
|
||||
Date: Mon, 10 Jan 2022 15:30:28 +0100
|
||||
Subject: [PATCH] nss: get shadow_logfd with log_get_logfd()
|
||||
|
||||
If /etc/nsswitch.conf doesn't exist podman crashes because shadow_logfd
|
||||
is NULL. In order to avoid that load the log file descriptor with the
|
||||
log_get_logfd() helper function.
|
||||
|
||||
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2038811
|
||||
|
||||
Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
|
||||
---
|
||||
lib/nss.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/lib/nss.c b/lib/nss.c
|
||||
index 02742902..06fa48e5 100644
|
||||
--- a/lib/nss.c
|
||||
+++ b/lib/nss.c
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "prototypes.h"
|
||||
#include "../libsubid/subid.h"
|
||||
#include "shadowlog_internal.h"
|
||||
+#include "shadowlog.h"
|
||||
|
||||
#define NSSWITCH "/etc/nsswitch.conf"
|
||||
|
||||
@@ -42,6 +43,7 @@ void nss_init(const char *nsswitch_path) {
|
||||
FILE *nssfp = NULL;
|
||||
char *line = NULL, *p, *token, *saveptr;
|
||||
size_t len = 0;
|
||||
+ FILE *shadow_logfd = log_get_logfd();
|
||||
|
||||
if (atomic_flag_test_and_set(&nss_init_started)) {
|
||||
// Another thread has started nss_init, wait for it to complete
|
||||
@@ -57,7 +59,7 @@ void nss_init(const char *nsswitch_path) {
|
||||
// subid: files
|
||||
nssfp = fopen(nsswitch_path, "r");
|
||||
if (!nssfp) {
|
||||
- fprintf(shadow_logfd, "Failed opening %s: %m", nsswitch_path);
|
||||
+ fprintf(shadow_logfd, "Failed opening %s: %m\n", nsswitch_path);
|
||||
atomic_store(&nss_init_completed, true);
|
||||
return;
|
||||
}
|
||||
--
|
||||
2.34.1
|
||||
|
507
shadow-4.9-rename-prog-to-shadow-progname.patch
Normal file
507
shadow-4.9-rename-prog-to-shadow-progname.patch
Normal file
@ -0,0 +1,507 @@
|
||||
diff -up shadow-4.9/lib/commonio.c.debug2 shadow-4.9/lib/commonio.c
|
||||
--- shadow-4.9/lib/commonio.c.debug2 2022-01-10 10:57:47.535238522 +0100
|
||||
+++ shadow-4.9/lib/commonio.c 2022-01-10 10:57:47.544238586 +0100
|
||||
@@ -147,7 +147,7 @@ static int do_lock_file (const char *fil
|
||||
if (log) {
|
||||
(void) fprintf (shadow_logfd,
|
||||
"%s: %s: %s\n",
|
||||
- Prog, file, strerror (errno));
|
||||
+ shadow_progname, file, strerror (errno));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -159,7 +159,7 @@ static int do_lock_file (const char *fil
|
||||
if (log) {
|
||||
(void) fprintf (shadow_logfd,
|
||||
"%s: %s file write error: %s\n",
|
||||
- Prog, file, strerror (errno));
|
||||
+ shadow_progname, file, strerror (errno));
|
||||
}
|
||||
(void) close (fd);
|
||||
unlink (file);
|
||||
@@ -169,7 +169,7 @@ static int do_lock_file (const char *fil
|
||||
if (log) {
|
||||
(void) fprintf (shadow_logfd,
|
||||
"%s: %s file sync error: %s\n",
|
||||
- Prog, file, strerror (errno));
|
||||
+ shadow_progname, file, strerror (errno));
|
||||
}
|
||||
(void) close (fd);
|
||||
unlink (file);
|
||||
@@ -182,7 +182,7 @@ static int do_lock_file (const char *fil
|
||||
if ((0==retval) && log) {
|
||||
(void) fprintf (shadow_logfd,
|
||||
"%s: %s: lock file already used\n",
|
||||
- Prog, file);
|
||||
+ shadow_progname, file);
|
||||
}
|
||||
unlink (file);
|
||||
return retval;
|
||||
@@ -193,7 +193,7 @@ static int do_lock_file (const char *fil
|
||||
if (log) {
|
||||
(void) fprintf (shadow_logfd,
|
||||
"%s: %s: %s\n",
|
||||
- Prog, lock, strerror (errno));
|
||||
+ shadow_progname, lock, strerror (errno));
|
||||
}
|
||||
unlink (file);
|
||||
errno = EINVAL;
|
||||
@@ -205,7 +205,7 @@ static int do_lock_file (const char *fil
|
||||
if (log) {
|
||||
(void) fprintf (shadow_logfd,
|
||||
"%s: existing lock file %s without a PID\n",
|
||||
- Prog, lock);
|
||||
+ shadow_progname, lock);
|
||||
}
|
||||
unlink (file);
|
||||
errno = EINVAL;
|
||||
@@ -216,7 +216,7 @@ static int do_lock_file (const char *fil
|
||||
if (log) {
|
||||
(void) fprintf (shadow_logfd,
|
||||
"%s: existing lock file %s with an invalid PID '%s'\n",
|
||||
- Prog, lock, buf);
|
||||
+ shadow_progname, lock, buf);
|
||||
}
|
||||
unlink (file);
|
||||
errno = EINVAL;
|
||||
@@ -226,7 +226,7 @@ static int do_lock_file (const char *fil
|
||||
if (log) {
|
||||
(void) fprintf (shadow_logfd,
|
||||
"%s: lock %s already used by PID %lu\n",
|
||||
- Prog, lock, (unsigned long) pid);
|
||||
+ shadow_progname, lock, (unsigned long) pid);
|
||||
}
|
||||
unlink (file);
|
||||
errno = EEXIST;
|
||||
@@ -236,7 +236,7 @@ static int do_lock_file (const char *fil
|
||||
if (log) {
|
||||
(void) fprintf (shadow_logfd,
|
||||
"%s: cannot get lock %s: %s\n",
|
||||
- Prog, lock, strerror (errno));
|
||||
+ shadow_progname, lock, strerror (errno));
|
||||
}
|
||||
unlink (file);
|
||||
return 0;
|
||||
@@ -248,13 +248,13 @@ static int do_lock_file (const char *fil
|
||||
if ((0==retval) && log) {
|
||||
(void) fprintf (shadow_logfd,
|
||||
"%s: %s: lock file already used\n",
|
||||
- Prog, file);
|
||||
+ shadow_progname, file);
|
||||
}
|
||||
} else {
|
||||
if (log) {
|
||||
(void) fprintf (shadow_logfd,
|
||||
"%s: cannot get lock %s: %s\n",
|
||||
- Prog, lock, strerror (errno));
|
||||
+ shadow_progname, lock, strerror (errno));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -449,7 +449,7 @@ int commonio_lock (struct commonio_db *d
|
||||
if (geteuid () != 0) {
|
||||
(void) fprintf (shadow_logfd,
|
||||
"%s: Permission denied.\n",
|
||||
- Prog);
|
||||
+ shadow_progname);
|
||||
}
|
||||
return 0; /* failure */
|
||||
}
|
||||
@@ -484,7 +484,7 @@ int commonio_lock (struct commonio_db *d
|
||||
/* no unnecessary retries on "permission denied" errors */
|
||||
if (geteuid () != 0) {
|
||||
(void) fprintf (shadow_logfd, "%s: Permission denied.\n",
|
||||
- Prog);
|
||||
+ shadow_progname);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
diff -up shadow-4.9/lib/nscd.c.debug2 shadow-4.9/lib/nscd.c
|
||||
--- shadow-4.9/lib/nscd.c.debug2 2022-01-10 10:57:47.537238536 +0100
|
||||
+++ shadow-4.9/lib/nscd.c 2022-01-10 10:57:47.544238586 +0100
|
||||
@@ -26,7 +26,7 @@ int nscd_flush_cache (const char *servic
|
||||
|
||||
if (run_command (cmd, spawnedArgs, spawnedEnv, &status) != 0) {
|
||||
/* run_command writes its own more detailed message. */
|
||||
- (void) fprintf (shadow_logfd, _(MSG_NSCD_FLUSH_CACHE_FAILED), Prog);
|
||||
+ (void) fprintf (shadow_logfd, _(MSG_NSCD_FLUSH_CACHE_FAILED), shadow_progname);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ int nscd_flush_cache (const char *servic
|
||||
if (!WIFEXITED (status)) {
|
||||
(void) fprintf (shadow_logfd,
|
||||
_("%s: nscd did not terminate normally (signal %d)\n"),
|
||||
- Prog, WTERMSIG (status));
|
||||
+ shadow_progname, WTERMSIG (status));
|
||||
return -1;
|
||||
} else if (code == E_CMD_NOTFOUND) {
|
||||
/* nscd is not installed, or it is installed but uses an
|
||||
@@ -45,8 +45,8 @@ int nscd_flush_cache (const char *servic
|
||||
return 0;
|
||||
} else if (code != 0) {
|
||||
(void) fprintf (shadow_logfd, _("%s: nscd exited with status %d\n"),
|
||||
- Prog, code);
|
||||
- (void) fprintf (shadow_logfd, _(MSG_NSCD_FLUSH_CACHE_FAILED), Prog);
|
||||
+ shadow_progname, code);
|
||||
+ (void) fprintf (shadow_logfd, _(MSG_NSCD_FLUSH_CACHE_FAILED), shadow_progname);
|
||||
return -1;
|
||||
}
|
||||
|
||||
diff -up shadow-4.9/lib/selinux.c.debug2 shadow-4.9/lib/selinux.c
|
||||
--- shadow-4.9/lib/selinux.c.debug2 2022-01-10 10:57:47.538238543 +0100
|
||||
+++ shadow-4.9/lib/selinux.c 2022-01-10 10:57:47.544238586 +0100
|
||||
@@ -216,7 +216,7 @@ int check_selinux_permit (const char *pe
|
||||
if (getprevcon_raw (&user_context_raw) != 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: can not get previous SELinux process context: %s\n"),
|
||||
- Prog, strerror (errno));
|
||||
+ shadow_progname, strerror (errno));
|
||||
SYSLOG ((LOG_WARN,
|
||||
"can not get previous SELinux process context: %s",
|
||||
strerror (errno)));
|
||||
diff -up shadow-4.9/lib/shadowlog.c.debug2 shadow-4.9/lib/shadowlog.c
|
||||
--- shadow-4.9/lib/shadowlog.c.debug2 2022-01-10 10:57:47.538238543 +0100
|
||||
+++ shadow-4.9/lib/shadowlog.c 2022-01-10 10:57:47.544238586 +0100
|
||||
@@ -2,14 +2,17 @@
|
||||
|
||||
#include "lib/shadowlog_internal.h"
|
||||
|
||||
+const char *shadow_progname;
|
||||
+FILE *shadow_logfd;
|
||||
+
|
||||
void log_set_progname(const char *progname)
|
||||
{
|
||||
- Prog = progname;
|
||||
+ shadow_progname = progname;
|
||||
}
|
||||
|
||||
const char *log_get_progname(void)
|
||||
{
|
||||
- return Prog;
|
||||
+ return shadow_progname;
|
||||
}
|
||||
|
||||
void log_set_logfd(FILE *fd)
|
||||
diff -up shadow-4.9/lib/shadowlog_internal.h.debug2 shadow-4.9/lib/shadowlog_internal.h
|
||||
--- shadow-4.9/lib/shadowlog_internal.h.debug2 2022-01-10 10:57:47.538238543 +0100
|
||||
+++ shadow-4.9/lib/shadowlog_internal.h 2022-01-10 10:57:47.544238586 +0100
|
||||
@@ -1,2 +1,2 @@
|
||||
-const char *Prog; /* Program name showed in error messages */
|
||||
-FILE *shadow_logfd; /* file descripter to which error messages are printed */
|
||||
+extern const char *shadow_progname; /* Program name showed in error messages */
|
||||
+extern FILE *shadow_logfd; /* file descripter to which error messages are printed */
|
||||
diff -up shadow-4.9/lib/spawn.c.debug2 shadow-4.9/lib/spawn.c
|
||||
--- shadow-4.9/lib/spawn.c.debug2 2022-01-10 10:57:47.538238543 +0100
|
||||
+++ shadow-4.9/lib/spawn.c 2022-01-10 10:57:47.544238586 +0100
|
||||
@@ -60,11 +60,11 @@ int run_command (const char *cmd, const
|
||||
exit (E_CMD_NOTFOUND);
|
||||
}
|
||||
fprintf (shadow_logfd, "%s: cannot execute %s: %s\n",
|
||||
- Prog, cmd, strerror (errno));
|
||||
+ shadow_progname, cmd, strerror (errno));
|
||||
exit (E_CMD_NOEXEC);
|
||||
} else if ((pid_t)-1 == pid) {
|
||||
fprintf (shadow_logfd, "%s: cannot execute %s: %s\n",
|
||||
- Prog, cmd, strerror (errno));
|
||||
+ shadow_progname, cmd, strerror (errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ int run_command (const char *cmd, const
|
||||
|
||||
if ((pid_t)-1 == wpid) {
|
||||
fprintf (shadow_logfd, "%s: waitpid (status: %d): %s\n",
|
||||
- Prog, *status, strerror (errno));
|
||||
+ shadow_progname, *status, strerror (errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
diff -up shadow-4.9/lib/sssd.c.debug2 shadow-4.9/lib/sssd.c
|
||||
--- shadow-4.9/lib/sssd.c.debug2 2022-01-10 10:57:47.538238543 +0100
|
||||
+++ shadow-4.9/lib/sssd.c 2022-01-10 10:57:47.544238586 +0100
|
||||
@@ -48,22 +48,22 @@ int sssd_flush_cache (int dbflags)
|
||||
free(sss_cache_args);
|
||||
if (rv != 0) {
|
||||
/* run_command writes its own more detailed message. */
|
||||
- SYSLOG ((LOG_WARN, MSG_SSSD_FLUSH_CACHE_FAILED, Prog));
|
||||
+ SYSLOG ((LOG_WARN, MSG_SSSD_FLUSH_CACHE_FAILED, shadow_progname));
|
||||
return -1;
|
||||
}
|
||||
|
||||
code = WEXITSTATUS (status);
|
||||
if (!WIFEXITED (status)) {
|
||||
SYSLOG ((LOG_WARN, "%s: sss_cache did not terminate normally (signal %d)",
|
||||
- Prog, WTERMSIG (status)));
|
||||
+ shadow_progname, WTERMSIG (status)));
|
||||
return -1;
|
||||
} else if (code == E_CMD_NOTFOUND) {
|
||||
/* sss_cache is not installed, or it is installed but uses an
|
||||
interpreter that is missing. Probably the former. */
|
||||
return 0;
|
||||
} else if (code != 0) {
|
||||
- SYSLOG ((LOG_WARN, "%s: sss_cache exited with status %d", Prog, code));
|
||||
- SYSLOG ((LOG_WARN, MSG_SSSD_FLUSH_CACHE_FAILED, Prog));
|
||||
+ SYSLOG ((LOG_WARN, "%s: sss_cache exited with status %d", shadow_progname, code));
|
||||
+ SYSLOG ((LOG_WARN, MSG_SSSD_FLUSH_CACHE_FAILED, shadow_progname));
|
||||
return -1;
|
||||
}
|
||||
|
||||
diff -up shadow-4.9/lib/tcbfuncs.c.debug2 shadow-4.9/lib/tcbfuncs.c
|
||||
--- shadow-4.9/lib/tcbfuncs.c.debug2 2022-01-10 10:57:47.538238543 +0100
|
||||
+++ shadow-4.9/lib/tcbfuncs.c 2022-01-10 10:59:01.228764507 +0100
|
||||
@@ -74,7 +74,7 @@ shadowtcb_status shadowtcb_gain_priv (vo
|
||||
* to exit soon.
|
||||
*/
|
||||
#define OUT_OF_MEMORY do { \
|
||||
- fprintf (shadow_logfd, _("%s: out of memory\n"), Prog); \
|
||||
+ fprintf (shadow_logfd, _("%s: out of memory\n"), shadow_progname); \
|
||||
(void) fflush (shadow_logfd); \
|
||||
} while (false)
|
||||
|
||||
@@ -120,7 +120,7 @@ static /*@null@*/ char *shadowtcb_path_r
|
||||
if (lstat (path, &st) != 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot stat %s: %s\n"),
|
||||
- Prog, path, strerror (errno));
|
||||
+ shadow_progname, path, strerror (errno));
|
||||
free (path);
|
||||
return NULL;
|
||||
}
|
||||
@@ -136,7 +136,7 @@ static /*@null@*/ char *shadowtcb_path_r
|
||||
if (!S_ISLNK (st.st_mode)) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: %s is neither a directory, nor a symlink.\n"),
|
||||
- Prog, path);
|
||||
+ shadow_progname, path);
|
||||
free (path);
|
||||
return NULL;
|
||||
}
|
||||
@@ -144,7 +144,7 @@ static /*@null@*/ char *shadowtcb_path_r
|
||||
if (-1 == ret) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot read symbolic link %s: %s\n"),
|
||||
- Prog, path, strerror (errno));
|
||||
+ shadow_progname, path, strerror (errno));
|
||||
free (path);
|
||||
return NULL;
|
||||
}
|
||||
@@ -153,7 +153,7 @@ static /*@null@*/ char *shadowtcb_path_r
|
||||
link[sizeof(link) - 1] = '\0';
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Suspiciously long symlink: %s\n"),
|
||||
- Prog, link);
|
||||
+ shadow_progname, link);
|
||||
return NULL;
|
||||
}
|
||||
link[(size_t)ret] = '\0';
|
||||
@@ -211,7 +211,7 @@ static shadowtcb_status mkdir_leading (c
|
||||
if (stat (TCB_DIR, &st) != 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot stat %s: %s\n"),
|
||||
- Prog, TCB_DIR, strerror (errno));
|
||||
+ shadow_progname, TCB_DIR, strerror (errno));
|
||||
goto out_free_path;
|
||||
}
|
||||
while ((ind = strchr (ptr, '/'))) {
|
||||
@@ -223,19 +223,19 @@ static shadowtcb_status mkdir_leading (c
|
||||
if ((mkdir (dir, 0700) != 0) && (errno != EEXIST)) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot create directory %s: %s\n"),
|
||||
- Prog, dir, strerror (errno));
|
||||
+ shadow_progname, dir, strerror (errno));
|
||||
goto out_free_dir;
|
||||
}
|
||||
if (chown (dir, 0, st.st_gid) != 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot change owner of %s: %s\n"),
|
||||
- Prog, dir, strerror (errno));
|
||||
+ shadow_progname, dir, strerror (errno));
|
||||
goto out_free_dir;
|
||||
}
|
||||
if (chmod (dir, 0711) != 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot change mode of %s: %s\n"),
|
||||
- Prog, dir, strerror (errno));
|
||||
+ shadow_progname, dir, strerror (errno));
|
||||
goto out_free_dir;
|
||||
}
|
||||
free (dir);
|
||||
@@ -265,7 +265,7 @@ static shadowtcb_status unlink_suffs (co
|
||||
if ((unlink (tmp) != 0) && (errno != ENOENT)) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: unlink: %s: %s\n"),
|
||||
- Prog, tmp, strerror (errno));
|
||||
+ shadow_progname, tmp, strerror (errno));
|
||||
free (tmp);
|
||||
return SHADOWTCB_FAILURE;
|
||||
}
|
||||
@@ -290,7 +290,7 @@ static shadowtcb_status rmdir_leading (c
|
||||
if (errno != ENOTEMPTY) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot remove directory %s: %s\n"),
|
||||
- Prog, dir, strerror (errno));
|
||||
+ shadow_progname, dir, strerror (errno));
|
||||
ret = SHADOWTCB_FAILURE;
|
||||
}
|
||||
free (dir);
|
||||
@@ -319,7 +319,7 @@ static shadowtcb_status move_dir (const
|
||||
if (stat (olddir, &oldmode) != 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot stat %s: %s\n"),
|
||||
- Prog, olddir, strerror (errno));
|
||||
+ shadow_progname, olddir, strerror (errno));
|
||||
goto out_free;
|
||||
}
|
||||
old_uid = oldmode.st_uid;
|
||||
@@ -346,7 +346,7 @@ static shadowtcb_status move_dir (const
|
||||
if (rename (real_old_dir, real_new_dir) != 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot rename %s to %s: %s\n"),
|
||||
- Prog, real_old_dir, real_new_dir, strerror (errno));
|
||||
+ shadow_progname, real_old_dir, real_new_dir, strerror (errno));
|
||||
goto out_free;
|
||||
}
|
||||
if (rmdir_leading (real_old_dir_rel) == SHADOWTCB_FAILURE) {
|
||||
@@ -355,7 +355,7 @@ static shadowtcb_status move_dir (const
|
||||
if ((unlink (olddir) != 0) && (errno != ENOENT)) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot remove %s: %s\n"),
|
||||
- Prog, olddir, strerror (errno));
|
||||
+ shadow_progname, olddir, strerror (errno));
|
||||
goto out_free;
|
||||
}
|
||||
if (asprintf (&newdir, TCB_DIR "/%s", user_newname) == -1) {
|
||||
@@ -369,7 +369,7 @@ static shadowtcb_status move_dir (const
|
||||
&& (symlink (real_new_dir_rel, newdir) != 0)) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot create symbolic link %s: %s\n"),
|
||||
- Prog, real_new_dir_rel, strerror (errno));
|
||||
+ shadow_progname, real_new_dir_rel, strerror (errno));
|
||||
goto out_free;
|
||||
}
|
||||
ret = SHADOWTCB_SUCCESS;
|
||||
@@ -468,31 +468,31 @@ shadowtcb_status shadowtcb_move (/*@NULL
|
||||
if (stat (tcbdir, &dirmode) != 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot stat %s: %s\n"),
|
||||
- Prog, tcbdir, strerror (errno));
|
||||
+ shadow_progname, tcbdir, strerror (errno));
|
||||
goto out_free;
|
||||
}
|
||||
if (chown (tcbdir, 0, 0) != 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot change owners of %s: %s\n"),
|
||||
- Prog, tcbdir, strerror (errno));
|
||||
+ shadow_progname, tcbdir, strerror (errno));
|
||||
goto out_free;
|
||||
}
|
||||
if (chmod (tcbdir, 0700) != 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot change mode of %s: %s\n"),
|
||||
- Prog, tcbdir, strerror (errno));
|
||||
+ shadow_progname, tcbdir, strerror (errno));
|
||||
goto out_free;
|
||||
}
|
||||
if (lstat (shadow, &filemode) != 0) {
|
||||
if (errno != ENOENT) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot lstat %s: %s\n"),
|
||||
- Prog, shadow, strerror (errno));
|
||||
+ shadow_progname, shadow, strerror (errno));
|
||||
goto out_free;
|
||||
}
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Warning, user %s has no tcb shadow file.\n"),
|
||||
- Prog, user_newname);
|
||||
+ shadow_progname, user_newname);
|
||||
} else {
|
||||
if (!S_ISREG (filemode.st_mode) ||
|
||||
filemode.st_nlink != 1) {
|
||||
@@ -500,19 +500,19 @@ shadowtcb_status shadowtcb_move (/*@NULL
|
||||
_("%s: Emergency: %s's tcb shadow is not a "
|
||||
"regular file with st_nlink=1.\n"
|
||||
"The account is left locked.\n"),
|
||||
- Prog, user_newname);
|
||||
+ shadow_progname, user_newname);
|
||||
goto out_free;
|
||||
}
|
||||
if (chown (shadow, user_newid, filemode.st_gid) != 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot change owner of %s: %s\n"),
|
||||
- Prog, shadow, strerror (errno));
|
||||
+ shadow_progname, shadow, strerror (errno));
|
||||
goto out_free;
|
||||
}
|
||||
if (chmod (shadow, filemode.st_mode & 07777) != 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot change mode of %s: %s\n"),
|
||||
- Prog, shadow, strerror (errno));
|
||||
+ shadow_progname, shadow, strerror (errno));
|
||||
goto out_free;
|
||||
}
|
||||
}
|
||||
@@ -522,7 +522,7 @@ shadowtcb_status shadowtcb_move (/*@NULL
|
||||
if (chown (tcbdir, user_newid, dirmode.st_gid) != 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot change owner of %s: %s\n"),
|
||||
- Prog, tcbdir, strerror (errno));
|
||||
+ shadow_progname, tcbdir, strerror (errno));
|
||||
goto out_free;
|
||||
}
|
||||
ret = SHADOWTCB_SUCCESS;
|
||||
@@ -547,7 +547,7 @@ shadowtcb_status shadowtcb_create (const
|
||||
if (stat (TCB_DIR, &tcbdir_stat) != 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot stat %s: %s\n"),
|
||||
- Prog, TCB_DIR, strerror (errno));
|
||||
+ shadow_progname, TCB_DIR, strerror (errno));
|
||||
return SHADOWTCB_FAILURE;
|
||||
}
|
||||
shadowgid = tcbdir_stat.st_gid;
|
||||
@@ -567,39 +567,39 @@ shadowtcb_status shadowtcb_create (const
|
||||
if (mkdir (dir, 0700) != 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: mkdir: %s: %s\n"),
|
||||
- Prog, dir, strerror (errno));
|
||||
+ shadow_progname, dir, strerror (errno));
|
||||
goto out_free;
|
||||
}
|
||||
fd = open (shadow, O_RDWR | O_CREAT | O_TRUNC, 0600);
|
||||
if (fd < 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot open %s: %s\n"),
|
||||
- Prog, shadow, strerror (errno));
|
||||
+ shadow_progname, shadow, strerror (errno));
|
||||
goto out_free;
|
||||
}
|
||||
close (fd);
|
||||
if (chown (shadow, 0, authgid) != 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot change owner of %s: %s\n"),
|
||||
- Prog, shadow, strerror (errno));
|
||||
+ shadow_progname, shadow, strerror (errno));
|
||||
goto out_free;
|
||||
}
|
||||
if (chmod (shadow, (mode_t) ((authgid == shadowgid) ? 0600 : 0640)) != 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot change mode of %s: %s\n"),
|
||||
- Prog, shadow, strerror (errno));
|
||||
+ shadow_progname, shadow, strerror (errno));
|
||||
goto out_free;
|
||||
}
|
||||
if (chown (dir, 0, authgid) != 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot change owner of %s: %s\n"),
|
||||
- Prog, dir, strerror (errno));
|
||||
+ shadow_progname, dir, strerror (errno));
|
||||
goto out_free;
|
||||
}
|
||||
if (chmod (dir, (mode_t) ((authgid == shadowgid) ? 02700 : 02710)) != 0) {
|
||||
fprintf (shadow_logfd,
|
||||
_("%s: Cannot change mode of %s: %s\n"),
|
||||
- Prog, dir, strerror (errno));
|
||||
+ shadow_progname, dir, strerror (errno));
|
||||
goto out_free;
|
||||
}
|
||||
if ( (shadowtcb_set_user (name) == SHADOWTCB_FAILURE)
|
39
shadow-4.9-shadow-progname-default-init.patch
Normal file
39
shadow-4.9-shadow-progname-default-init.patch
Normal file
@ -0,0 +1,39 @@
|
||||
diff -up shadow-4.9/lib/shadowlog.c.debug3 shadow-4.9/lib/shadowlog.c
|
||||
--- shadow-4.9/lib/shadowlog.c.debug3 2022-01-10 11:16:31.636261531 +0100
|
||||
+++ shadow-4.9/lib/shadowlog.c 2022-01-10 11:16:31.637261538 +0100
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
#include "lib/shadowlog_internal.h"
|
||||
|
||||
-const char *shadow_progname;
|
||||
-FILE *shadow_logfd;
|
||||
+const char *shadow_progname = "libshadow";
|
||||
+FILE *shadow_logfd = NULL;
|
||||
|
||||
void log_set_progname(const char *progname)
|
||||
{
|
||||
diff -up shadow-4.9/libsubid/api.c.debug3 shadow-4.9/libsubid/api.c
|
||||
--- shadow-4.9/libsubid/api.c.debug3 2022-01-10 11:16:31.637261538 +0100
|
||||
+++ shadow-4.9/libsubid/api.c 2022-01-10 11:17:15.431574120 +0100
|
||||
@@ -40,17 +40,16 @@
|
||||
#include "subid.h"
|
||||
#include "shadowlog.h"
|
||||
|
||||
-const char *Prog = "(libsubid)";
|
||||
-
|
||||
bool libsubid_init(const char *progname, FILE * logfd)
|
||||
{
|
||||
FILE *shadow_logfd;
|
||||
if (progname) {
|
||||
progname = strdup(progname);
|
||||
- if (progname)
|
||||
- Prog = progname;
|
||||
- else
|
||||
+ if (!progname)
|
||||
return false;
|
||||
+ log_set_progname(progname);
|
||||
+ } else {
|
||||
+ log_set_progname("(libsubid)");
|
||||
}
|
||||
|
||||
if (logfd) {
|
@ -1,7 +1,7 @@
|
||||
Summary: Utilities for managing accounts and shadow password files
|
||||
Name: shadow-utils
|
||||
Version: 4.9
|
||||
Release: 8%{?dist}
|
||||
Release: 9%{?dist}
|
||||
Epoch: 2
|
||||
License: BSD and GPLv2+
|
||||
URL: https://github.com/shadow-maint/shadow
|
||||
@ -67,6 +67,15 @@ Patch22: shadow-4.9-newgrp-fix-segmentation-fault.patch
|
||||
Patch23: shadow-4.9-getsubids.patch
|
||||
# https://github.com/shadow-maint/shadow/commit/a757b458ffb4fb9a40bcbb4f7869449431c67f83
|
||||
Patch24: shadow-4.9-groupdel-fix-sigsegv-when-passwd-does-not-exist.patch
|
||||
# https://github.com/shadow-maint/shadow/commit/79157cbad87f42cdc2068d72e798488572c68bb2
|
||||
Patch25: shadow-4.9-make-shadow-logfd-and-prog-not-extern.patch
|
||||
# https://github.com/shadow-maint/shadow/commit/0e6fe5e728a45baff3977d73e81a27adb6ae30c6
|
||||
Patch26: shadow-4.9-rename-prog-to-shadow-progname.patch
|
||||
# https://github.com/shadow-maint/shadow/commit/2b0bdef6f9a18382e92b0fb6d893c4339123ffac
|
||||
# https://github.com/shadow-maint/shadow/commit/9750fd681919ed558a9b044248a284d567cddf1a
|
||||
Patch27: shadow-4.9-shadow-progname-default-init.patch
|
||||
# https://github.com/shadow-maint/shadow/commit/e101219ad71de11da3fdd1b3ec2620fd1a97b92c
|
||||
Patch28: shadow-4.9-nss-get-shadow-logfd-with-log-get-logfd.patch
|
||||
|
||||
### Dependencies ###
|
||||
Requires: audit-libs >= 1.6.5
|
||||
@ -151,6 +160,10 @@ Development files for shadow-utils-subid.
|
||||
%patch22 -p1 -b .newgrp-fix-segmentation-fault
|
||||
%patch23 -p1 -b .getsubids
|
||||
%patch24 -p1 -b .groupdel-fix-sigsegv-when-passwd-does-not-exist
|
||||
%patch25 -p1 -b .make-shadow-logfd-and-prog-not-extern
|
||||
%patch26 -p1 -b .rename-prog-to-shadow-progname
|
||||
%patch27 -p1 -b .shadow-progname-default-init
|
||||
%patch28 -p1 -b .nss-get-shadow-logfd-with-log-get-logfd
|
||||
|
||||
iconv -f ISO88591 -t utf-8 doc/HOWTO > doc/HOWTO.utf8
|
||||
cp -f doc/HOWTO.utf8 doc/HOWTO
|
||||
@ -323,6 +336,13 @@ rm -f $RPM_BUILD_ROOT/%{_libdir}/libsubid.la
|
||||
%{_libdir}/libsubid.so
|
||||
|
||||
%changelog
|
||||
* Mon Jan 17 2022 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.9-9
|
||||
- nss: get shadow_logfd with log_get_logfd() (#2038811)
|
||||
- lib: make shadow_logfd and Prog not extern
|
||||
- lib: rename Prog to shadow_progname
|
||||
- lib: provide default values for shadow_progname
|
||||
- libsubid: use log_set_progname in subid_init
|
||||
|
||||
* Fri Nov 19 2021 Iker Pedrosa <ipedrosa@redhat.com> - 2:4.9-8
|
||||
- getsubids: provide system binary and man page (#1980780)
|
||||
- pwck: fix segfault when calling fprintf() (#2021339)
|
||||
|
Loading…
Reference in New Issue
Block a user