Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37045650
en ru br
Репозитории ALT
S:4.14.0-alt1
5.1: 4.0.4.1-alt9
4.1: 4.0.4.1-alt9
4.0: 4.0.4.1-alt8
3.0: 4.0.4.1-alt5
www.altlinux.org/Changes

Группа :: Система/Основа
Пакет: shadow

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: shadow-4.0.4.1-owl-chage-drop-priv.patch
Скачать


diff -urp shadow-4.0.4.1.orig/src/chage.c shadow-4.0.4.1/src/chage.c
--- shadow-4.0.4.1.orig/src/chage.c	Thu Jun 19 17:57:15 2003
+++ shadow-4.0.4.1/src/chage.c	Fri Nov 26 14:22:43 2004
@@ -352,7 +352,8 @@ int main (int argc, char **argv)
 	const struct spwd *sp;
 	struct spwd spwd;
 	uid_t ruid;
-	int amroot, pwrw;
+	gid_t rgid;
+	int amroot;
 	const struct passwd *pw;
 	struct passwd pwent;
 	char name[BUFSIZ];
@@ -369,6 +370,7 @@ int main (int argc, char **argv)
 	textdomain (PACKAGE);
 
 	ruid = getuid ();
+	rgid = getgid ();
 	amroot = (ruid == 0);
 
 	/*
@@ -505,8 +507,7 @@ int main (int argc, char **argv)
 	 * file entries into memory. Then we get a pointer to the password
 	 * file entry for the requested user.
 	 */
-	pwrw = 0;
-	if (!pw_open (pwrw ? O_RDWR : O_RDONLY)) {
+	if (!pw_open (O_RDONLY)) {
 		fprintf (stderr, _("%s: can't open password file\n"),
 			 Prog);
 		cleanup (1);
@@ -548,7 +549,7 @@ int main (int argc, char **argv)
 		exit (1);
 	}
 
-	if (lflg && (setgid (getgid ()) || setuid (ruid))) {
+	if (lflg && (setregid (rgid, rgid) || setreuid (ruid, ruid))) {
 		fprintf (stderr, "%s: failed to drop privileges (%s)\n",
 			 Prog, strerror (errno));
 		exit (1);
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin