- 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:
Iker Pedrosa 2022-01-17 10:00:50 +01:00
parent 957f0eb09e
commit 77cc4a7c14
5 changed files with 3112 additions and 1 deletions

File diff suppressed because it is too large Load Diff

View 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

View 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)

View 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) {

View File

@ -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)