* src/su.c: Added const modifiers.
* lib/prototypes: Synchronize splint annotations.
This commit is contained in:
parent
94c1763f71
commit
5eb9ed0aaf
@ -1,3 +1,8 @@
|
|||||||
|
2011-08-15 Nicolas François <nicolas.francois@centraliens.net>
|
||||||
|
|
||||||
|
* src/su.c: Added const modifiers.
|
||||||
|
* lib/prototypes: Synchronize splint annotations.
|
||||||
|
|
||||||
2011-08-14 Nicolas François <nicolas.francois@centraliens.net>
|
2011-08-14 Nicolas François <nicolas.francois@centraliens.net>
|
||||||
|
|
||||||
* src/su.c: Add splint annotations.
|
* src/su.c: Add splint annotations.
|
||||||
|
@ -240,7 +240,7 @@ extern void mailcheck (void);
|
|||||||
extern void motd (void);
|
extern void motd (void);
|
||||||
|
|
||||||
/* myname.c */
|
/* myname.c */
|
||||||
extern /*@null@*/struct passwd *get_my_pwent (void);
|
extern /*@null@*//*@only@*/struct passwd *get_my_pwent (void);
|
||||||
|
|
||||||
/* pam_pass_non_interractive.c */
|
/* pam_pass_non_interractive.c */
|
||||||
#ifdef USE_PAM
|
#ifdef USE_PAM
|
||||||
|
22
src/su.c
22
src/su.c
@ -132,11 +132,11 @@ static bool iswheel (const char *);
|
|||||||
#endif /* !USE_PAM */
|
#endif /* !USE_PAM */
|
||||||
static bool restricted_shell (const char *shellname);
|
static bool restricted_shell (const char *shellname);
|
||||||
static /*@noreturn@*/void su_failure (const char *tty, bool su_to_root);
|
static /*@noreturn@*/void su_failure (const char *tty, bool su_to_root);
|
||||||
static struct passwd * check_perms (void);
|
static /*@only@*/struct passwd * check_perms (void);
|
||||||
#ifdef USE_PAM
|
#ifdef USE_PAM
|
||||||
static void check_perms_pam (struct passwd *pw);
|
static void check_perms_pam (const struct passwd *pw);
|
||||||
#else /* !USE_PAM */
|
#else /* !USE_PAM */
|
||||||
static void check_perms_nopam (struct passwd *pw);
|
static void check_perms_nopam (const struct passwd *pw);
|
||||||
#endif /* !USE_PAM */
|
#endif /* !USE_PAM */
|
||||||
static void save_caller_context (char **argv);
|
static void save_caller_context (char **argv);
|
||||||
static void process_flags (int argc, char **argv);
|
static void process_flags (int argc, char **argv);
|
||||||
@ -418,7 +418,7 @@ static void usage (int status)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_PAM
|
#ifdef USE_PAM
|
||||||
static void check_perms_pam (struct passwd *pw)
|
static void check_perms_pam (const struct passwd *pw)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
ret = pam_authenticate (pamh, 0);
|
ret = pam_authenticate (pamh, 0);
|
||||||
@ -459,9 +459,9 @@ static void check_perms_pam (struct passwd *pw)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else /* !USE_PAM */
|
#else /* !USE_PAM */
|
||||||
static void check_perms_nopam (struct passwd *pw)
|
static void check_perms_nopam (const struct passwd *pw)
|
||||||
{
|
{
|
||||||
struct spwd *spwd = NULL;
|
/*@observer@*/const struct spwd *spwd = NULL;
|
||||||
/*@observer@*/const char *password = pw->pw_passwd;
|
/*@observer@*/const char *password = pw->pw_passwd;
|
||||||
RETSIGTYPE (*oldsig) (int);
|
RETSIGTYPE (*oldsig) (int);
|
||||||
|
|
||||||
@ -572,7 +572,7 @@ static void check_perms_nopam (struct passwd *pw)
|
|||||||
* In case of subsystem login, the user is first authenticated in the
|
* In case of subsystem login, the user is first authenticated in the
|
||||||
* caller's root subsystem, and then in the user's target subsystem.
|
* caller's root subsystem, and then in the user's target subsystem.
|
||||||
*/
|
*/
|
||||||
static struct passwd * check_perms (void)
|
static /*@only@*/struct passwd * check_perms (void)
|
||||||
{
|
{
|
||||||
#ifdef USE_PAM
|
#ifdef USE_PAM
|
||||||
const char *tmp_name;
|
const char *tmp_name;
|
||||||
@ -654,7 +654,7 @@ static struct passwd * check_perms (void)
|
|||||||
*/
|
*/
|
||||||
static void save_caller_context (char **argv)
|
static void save_caller_context (char **argv)
|
||||||
{
|
{
|
||||||
struct passwd *pw = NULL;
|
const struct passwd *pw = NULL;
|
||||||
const char *password = NULL;
|
const char *password = NULL;
|
||||||
/*
|
/*
|
||||||
* Get the program name. The program name is used as a prefix to
|
* Get the program name. The program name is used as a prefix to
|
||||||
@ -710,7 +710,7 @@ static void save_caller_context (char **argv)
|
|||||||
*/
|
*/
|
||||||
password = pw->pw_passwd;
|
password = pw->pw_passwd;
|
||||||
if (strcmp (pw->pw_passwd, SHADOW_PASSWD_STRING) == 0) {
|
if (strcmp (pw->pw_passwd, SHADOW_PASSWD_STRING) == 0) {
|
||||||
struct spwd *spwd = getspnam (caller_name);
|
const struct spwd *spwd = getspnam (caller_name);
|
||||||
if (NULL != spwd) {
|
if (NULL != spwd) {
|
||||||
password = spwd->sp_pwdp;
|
password = spwd->sp_pwdp;
|
||||||
}
|
}
|
||||||
@ -1006,7 +1006,7 @@ int main (int argc, char **argv)
|
|||||||
* in /etc/passwd.
|
* in /etc/passwd.
|
||||||
*/
|
*/
|
||||||
if (NULL == shellstr) {
|
if (NULL == shellstr) {
|
||||||
shellstr = (char *) strdup (pw->pw_shell);
|
shellstr = pw->pw_shell;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1161,6 +1161,8 @@ int main (int argc, char **argv)
|
|||||||
(void) shell (shellstr, cp, environ);
|
(void) shell (shellstr, cp, environ);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pw_free (pw);
|
||||||
|
|
||||||
return (errno == ENOENT ? E_CMD_NOTFOUND : E_CMD_NOEXEC);
|
return (errno == ENOENT ? E_CMD_NOTFOUND : E_CMD_NOEXEC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user