Репозитории 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 |
Группа :: Система/Основа
Пакет: 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);