diff options
author | Dmitry V. Levin <ldv@altlinux.org> | 2020-03-16 21:02:18 +0000 |
---|---|---|
committer | Dmitry V. Levin <ldv@altlinux.org> | 2020-03-19 18:40:16 +0000 |
commit | a9781a918441666a25636879801f45538422d475 (patch) | |
tree | 73474cc9d34b23498e1453e69f28d92cbf0565bc /modules/pam_securetty | |
parent | a6fa12374401f786371e7066cb162ec363b37381 (diff) | |
download | pam-a9781a918441666a25636879801f45538422d475.tar.gz pam-a9781a918441666a25636879801f45538422d475.tar.bz2 pam-a9781a918441666a25636879801f45538422d475.zip |
modules/pam_securetty: use pam_str_skip_prefix and pam_str_skip_prefix_len
* modules/pam_securetty/pam_securetty.c: Include "pam_inline.h".
(securetty_perform_check): Use pam_str_skip_prefix and
pam_str_skip_prefix_len instead of ugly strncmp invocations.
Diffstat (limited to 'modules/pam_securetty')
-rw-r--r-- | modules/pam_securetty/pam_securetty.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/modules/pam_securetty/pam_securetty.c b/modules/pam_securetty/pam_securetty.c index e8a9273b..51249a9c 100644 --- a/modules/pam_securetty/pam_securetty.c +++ b/modules/pam_securetty/pam_securetty.c @@ -43,6 +43,7 @@ #include <security/pam_modules.h> #include <security/pam_modutil.h> #include <security/pam_ext.h> +#include "pam_inline.h" #define PAM_DEBUG_ARG 0x0001 #define PAM_NOCONSOLE_ARG 0x0002 @@ -77,6 +78,7 @@ securetty_perform_check (pam_handle_t *pamh, int ctrl, const char *securettyfile; const char *username; const char *uttyname; + const char *str; const void *void_uttyname; char ttyfileline[256]; char ptname[256]; @@ -111,9 +113,8 @@ securetty_perform_check (pam_handle_t *pamh, int ctrl, } /* The PAM_TTY item may be prefixed with "/dev/" - skip that */ - if (strncmp(TTY_PREFIX, uttyname, sizeof(TTY_PREFIX)-1) == 0) { - uttyname += sizeof(TTY_PREFIX)-1; - } + if ((str = pam_str_skip_prefix(uttyname, TTY_PREFIX)) != NULL) + uttyname = str; if (stat(SECURETTY_FILE, &ttyfileinfo)) { #ifdef VENDORDIR @@ -185,18 +186,17 @@ securetty_perform_check (pam_handle_t *pamh, int ctrl, fclose(cmdlinefile); for (; p; p = strstr(p+1, "console=")) { - char *e; + const char *e; /* Test whether this is a beginning of a word? */ if (p > line && p[-1] != ' ') continue; /* Is this our console? */ - if (strncmp(p + 8, uttyname, strlen(uttyname))) + if ((e = pam_str_skip_prefix_len(p + 8, uttyname, strlen(uttyname))) == NULL) continue; /* Is there any garbage after the TTY name? */ - e = p + 8 + strlen(uttyname); if (*e == ',' || *e == ' ' || *e == '\n' || *e == 0) { retval = 0; break; |