diff --git a/ChangeLog b/ChangeLog index 559dfaef..53697ebd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,21 @@ +2007-11-19 Nicolas François + + Fix some compilation warnings: + * src/login.c: "dereferencing type-punned pointer will break + strict-aliasing rules", add a variable indirection: ptr_pam_user. + * lib/commonio.c: do not initialize the sb stat structure. + * lib/pwio.c, lib/shadowio.c, lib/sgroupio.c, lib/groupio.c: + initialize the security context if WITH_SELINUX. + * lib/nscd.c: The service argument is not const (used in the exec* + parameters). This matches with the prototype definition. + * src/groupmems.c: Avoid ++i when i is also used in the same line. + * src/newusers.c: i is positive every time it is compared. Add + cast to unsigned int. + * src/nologin.c: Use a main() prototype with no arguments. + * libmisc/getdate.y: Initialize the type and value fields of the + terminating entry for each TABLE. + * libmisc/tz.c: Use "TZ=CST6CDT" as the default timezone. + 2007-11-19 Nicolas François * man/pl/Makefile.am: Add getspnam.3 to EXTRA_DIST since it is diff --git a/lib/commonio.c b/lib/commonio.c index 85eb7c41..a1e7e1ef 100644 --- a/lib/commonio.c +++ b/lib/commonio.c @@ -53,7 +53,7 @@ int lrename (const char *old, const char *new) int res; #if defined(S_ISLNK) - struct stat sb = { 0 }; + struct stat sb; if (lstat (new, &sb) == 0 && S_ISLNK (sb.st_mode)) { if (realpath (new, resolved_path) == NULL) { perror ("realpath in lrename()"); diff --git a/lib/groupio.c b/lib/groupio.c index 18a8f49a..686dca95 100644 --- a/lib/groupio.c +++ b/lib/groupio.c @@ -63,6 +63,9 @@ static struct commonio_db group_db = { GROUP_FILE, /* filename */ &group_ops, /* ops */ NULL, /* fp */ +#ifdef WITH_SELINUX + NULL, /* scontext */ +#endif NULL, /* head */ NULL, /* tail */ NULL, /* cursor */ diff --git a/lib/nscd.c b/lib/nscd.c index d897af74..baa5f6e5 100644 --- a/lib/nscd.c +++ b/lib/nscd.c @@ -16,7 +16,7 @@ /* * nscd_flush_cache - flush specified service buffer in nscd cache */ -int nscd_flush_cache (const char *service) +int nscd_flush_cache (char *service) { pid_t pid, termpid; int err, status; diff --git a/lib/pwio.c b/lib/pwio.c index 14702ff5..ae99b411 100644 --- a/lib/pwio.c +++ b/lib/pwio.c @@ -64,6 +64,9 @@ static struct commonio_db passwd_db = { PASSWD_FILE, /* filename */ &passwd_ops, /* ops */ NULL, /* fp */ +#ifdef WITH_SELINUX + NULL, /* scontext */ +#endif NULL, /* head */ NULL, /* tail */ NULL, /* cursor */ diff --git a/lib/sgroupio.c b/lib/sgroupio.c index 4666b085..cf3f2dd1 100644 --- a/lib/sgroupio.c +++ b/lib/sgroupio.c @@ -107,6 +107,9 @@ static struct commonio_db gshadow_db = { SGROUP_FILE, /* filename */ &gshadow_ops, /* ops */ NULL, /* fp */ +#ifdef WITH_SELINUX + NULL, /* scontext */ +#endif NULL, /* head */ NULL, /* tail */ NULL, /* cursor */ diff --git a/lib/shadowio.c b/lib/shadowio.c index b7bd2e1b..d22f0c6e 100644 --- a/lib/shadowio.c +++ b/lib/shadowio.c @@ -61,6 +61,9 @@ static struct commonio_db shadow_db = { SHADOW_FILE, /* filename */ &shadow_ops, /* ops */ NULL, /* fp */ +#ifdef WITH_SELINUX + NULL, /* scontext */ +#endif NULL, /* head */ NULL, /* tail */ NULL, /* cursor */ diff --git a/libmisc/getdate.y b/libmisc/getdate.y index e4504e3e..134b3f19 100644 --- a/libmisc/getdate.y +++ b/libmisc/getdate.y @@ -464,7 +464,7 @@ static TABLE const MonthDayTable[] = { { "thurs", tDAY, 4 }, { "friday", tDAY, 5 }, { "saturday", tDAY, 6 }, - { NULL } + { NULL, 0, 0 } }; /* Time units table. */ @@ -479,7 +479,7 @@ static TABLE const UnitsTable[] = { { "min", tMINUTE_UNIT, 1 }, { "second", tSEC_UNIT, 1 }, { "sec", tSEC_UNIT, 1 }, - { NULL } + { NULL, 0, 0 } }; /* Assorted relative-time words. */ @@ -504,7 +504,7 @@ static TABLE const OtherTable[] = { { "eleventh", tUNUMBER, 11 }, { "twelfth", tUNUMBER, 12 }, { "ago", tAGO, 1 }, - { NULL } + { NULL, 0, 0 } }; /* The timezone table. */ @@ -559,7 +559,7 @@ static TABLE const TimezoneTable[] = { { "nzst", tZONE, -HOUR (12) }, /* New Zealand Standard */ { "nzdt", tDAYZONE, -HOUR (12) }, /* New Zealand Daylight */ { "idle", tZONE, -HOUR (12) }, /* International Date Line East */ - { NULL } + { NULL, 0, 0 } }; /* Military timezone table. */ @@ -589,7 +589,7 @@ static TABLE const MilitaryTable[] = { { "x", tZONE, HOUR (-11) }, { "y", tZONE, HOUR (-12) }, { "z", tZONE, HOUR ( 0) }, - { NULL } + { NULL, 0, 0 } }; diff --git a/libmisc/tz.c b/libmisc/tz.c index 73829d75..6ea0fceb 100644 --- a/libmisc/tz.c +++ b/libmisc/tz.c @@ -45,7 +45,7 @@ char *tz (const char *fname) { FILE *fp = 0; static char tzbuf[BUFSIZ]; - const char *def_tz; + const char *def_tz = "TZ=CST6CDT"; if ((fp = fopen (fname, "r")) == NULL || fgets (tzbuf, sizeof (tzbuf), fp) == NULL) { diff --git a/src/groupmems.c b/src/groupmems.c index 97252e9d..cb78ce24 100644 --- a/src/groupmems.c +++ b/src/groupmems.c @@ -126,7 +126,8 @@ static void rmfromgroup (char *user, char **members) } while (found && NULL != members[i]) { - members[i] = members[++i]; + members[i] = members[i+1]; + i++; } if (!found) { diff --git a/src/login.c b/src/login.c index beb55f83..1120d263 100644 --- a/src/login.c +++ b/src/login.c @@ -348,6 +348,7 @@ int main (int argc, char **argv) int retcode; pid_t child; char *pam_user; + char **ptr_pam_user = &pam_user; #else struct spwd *spwd = NULL; #endif @@ -620,7 +621,7 @@ int main (int argc, char **argv) /* if we didn't get a user on the command line, set it to NULL */ pam_get_item (pamh, PAM_USER, - (const void **) &pam_user); + (const void **)ptr_pam_user); if (pam_user[0] == '\0') pam_set_item (pamh, PAM_USER, NULL); @@ -644,7 +645,7 @@ int main (int argc, char **argv) retcode = pam_authenticate (pamh, 0); pam_get_item (pamh, PAM_USER, - (const void **) &pam_user); + (const void **) ptr_pam_user); if (pam_user && pam_user[0]) { pwd = xgetpwnam(pam_user); @@ -737,7 +738,7 @@ int main (int argc, char **argv) First get the username that we are actually using, though. */ retcode = - pam_get_item (pamh, PAM_USER, (const void **) &pam_user); + pam_get_item (pamh, PAM_USER, (const void **)ptr_pam_user); setpwent (); pwd = xgetpwnam (pam_user); if (!pwd) { diff --git a/src/newusers.c b/src/newusers.c index f2885902..ce27fb9c 100644 --- a/src/newusers.c +++ b/src/newusers.c @@ -116,11 +116,11 @@ static int add_group (const char *name, const char *gid, gid_t * ngid) if (gid[0] == '\0') { i = 100; for (pw_rewind (); (pwd = pw_next ());) { - if (pwd->pw_uid >= i) + if (pwd->pw_uid >= (unsigned int)i) i = pwd->pw_uid + 1; } for (gr_rewind (); (grp = gr_next ());) { - if (grp->gr_gid == i) { + if (grp->gr_gid == (unsigned int)i) { i = -1; break; } @@ -133,7 +133,7 @@ static int add_group (const char *name, const char *gid, gid_t * ngid) */ i = atoi (gid); for (gr_rewind (); (grp = gr_next ());) - if (grp->gr_gid == i) + if (grp->gr_gid == (unsigned int)i) goto add_member; } else /* @@ -149,7 +149,7 @@ static int add_group (const char *name, const char *gid, gid_t * ngid) */ if (i == -1) { for (i = 100, gr_rewind (); (grp = gr_next ());) - if (grp->gr_gid >= i) + if (grp->gr_gid >= (unsigned int)i) i = grp->gr_gid + 1; } diff --git a/src/nologin.c b/src/nologin.c index 85d54631..3fa7edb4 100644 --- a/src/nologin.c +++ b/src/nologin.c @@ -30,7 +30,7 @@ #include #include "exitcodes.h" -int main (int argc, char **argv) +int main () { const char *user, *tty;