Annotation of /trunk/shadow/patches/shadow-4.1.5-userdel-avoid-bad-mem-access.patch
Parent Directory | Revision Log
Revision 1667 -
(hide annotations)
(download)
Fri Mar 2 13:08:24 2012 UTC (12 years, 6 months ago) by niro
File size: 1739 byte(s)
Fri Mar 2 13:08:24 2012 UTC (12 years, 6 months ago) by niro
File size: 1739 byte(s)
-added more fixes
1 | niro | 1667 | Index: src/userdel.c |
2 | =================================================================== | ||
3 | --- src/userdel.c (revision 3713) | ||
4 | +++ src/userdel.c (working copy) | ||
5 | @@ -329,26 +329,33 @@ | ||
6 | } | ||
7 | |||
8 | if (NULL == pwd) { | ||
9 | + char gr_name[GROUP_NAME_MAX_LENGTH + 1]; | ||
10 | + | ||
11 | + /* make a copy of the group name before we delete it. | ||
12 | + * we can't use ->gr_name after the group is deleted | ||
13 | + * for logging purposes */ | ||
14 | + snprintf(gr_name, GROUP_NAME_MAX_LENGTH, "%s", grp->gr_name); | ||
15 | + | ||
16 | /* | ||
17 | * We can remove this group, it is not the primary | ||
18 | * group of any remaining user. | ||
19 | */ | ||
20 | - if (gr_remove (grp->gr_name) == 0) { | ||
21 | + if (gr_remove (gr_name) == 0) { | ||
22 | fprintf (stderr, | ||
23 | _("%s: cannot remove entry '%s' from %s\n"), | ||
24 | - Prog, grp->gr_name, gr_dbname ()); | ||
25 | + Prog, gr_name, gr_dbname ()); | ||
26 | fail_exit (E_GRP_UPDATE); | ||
27 | } | ||
28 | |||
29 | #ifdef WITH_AUDIT | ||
30 | audit_logger (AUDIT_DEL_GROUP, Prog, | ||
31 | "deleting group", | ||
32 | - grp->gr_name, AUDIT_NO_ID, | ||
33 | + gr_name, AUDIT_NO_ID, | ||
34 | SHADOW_AUDIT_SUCCESS); | ||
35 | #endif /* WITH_AUDIT */ | ||
36 | SYSLOG ((LOG_INFO, | ||
37 | "removed group '%s' owned by '%s'\n", | ||
38 | - grp->gr_name, user_name)); | ||
39 | + gr_name, user_name)); | ||
40 | |||
41 | #ifdef SHADOWGRP | ||
42 | if (sgr_locate (user_name) != NULL) { | ||
43 | @@ -361,12 +368,12 @@ | ||
44 | #ifdef WITH_AUDIT | ||
45 | audit_logger (AUDIT_DEL_GROUP, Prog, | ||
46 | "deleting shadow group", | ||
47 | - grp->gr_name, AUDIT_NO_ID, | ||
48 | + gr_name, AUDIT_NO_ID, | ||
49 | SHADOW_AUDIT_SUCCESS); | ||
50 | #endif /* WITH_AUDIT */ | ||
51 | SYSLOG ((LOG_INFO, | ||
52 | "removed shadow group '%s' owned by '%s'\n", | ||
53 | - grp->gr_name, user_name)); | ||
54 | + gr_name, user_name)); | ||
55 | |||
56 | } | ||
57 | #endif /* SHADOWGRP */ |