diff options
author | Thorsten Kukuk <kukuk@thkukuk.de> | 2005-09-20 08:31:27 +0000 |
---|---|---|
committer | Thorsten Kukuk <kukuk@thkukuk.de> | 2005-09-20 08:31:27 +0000 |
commit | cff33b6413b03978d6289542f9aec790f0785783 (patch) | |
tree | 34abf1d042d90229f84c4bd1590f9488cf6d4806 /libpam/pam_handlers.c | |
parent | ccfa4297f4081a42919afd793a615d09b965442c (diff) | |
download | pam-cff33b6413b03978d6289542f9aec790f0785783.tar.gz pam-cff33b6413b03978d6289542f9aec790f0785783.tar.bz2 pam-cff33b6413b03978d6289542f9aec790f0785783.zip |
Relevant BUGIDs: none
Purpose of commit: bugfix
Commit summary:
---------------
Fix missing NULL pointer check and us asprintf instead of malloc/snprintf
(from Dmitry V. Levin).
Diffstat (limited to 'libpam/pam_handlers.c')
-rw-r--r-- | libpam/pam_handlers.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/libpam/pam_handlers.c b/libpam/pam_handlers.c index 378c6cee..04c6ff17 100644 --- a/libpam/pam_handlers.c +++ b/libpam/pam_handlers.c @@ -384,15 +384,12 @@ int _pam_init_handlers(pam_handle_t *pamh) int read_something=0; D(("searching " PAM_CONFIG_D " for config files")); - filename = malloc(sizeof(PAM_CONFIG_DF) - +strlen(pamh->service_name)); - if (filename == NULL) { + if (asprintf(&filename, PAM_CONFIG_DF, pamh->service_name) < 0) { pam_syslog(pamh, LOG_ERR, "_pam_init_handlers: no memory; service %s", pamh->service_name); return PAM_BUF_ERR; } - sprintf(filename, PAM_CONFIG_DF, pamh->service_name); D(("opening %s", filename)); f = fopen(filename, "r"); if (f != NULL) { @@ -631,12 +628,12 @@ int _pam_add_handler(pam_handle_t *pamh if (mod_path[0] == '/') { break; } - mod_full_path = malloc(sizeof(DEFAULT_MODULE_PATH)+strlen(mod_path)); - if (mod_full_path) { - sprintf(mod_full_path, DEFAULT_MODULE_PATH "%s", mod_path); + if (asprintf(&mod_full_path, "%s%s", + DEFAULT_MODULE_PATH, mod_path) >= 0) { mod_path = mod_full_path; break; } + mod_full_path = NULL; pam_syslog(pamh, LOG_CRIT, "cannot malloc full mod path"); case 0: mod_path = UNKNOWN_MODULE_PATH; |