diff options
author | Tobias Stoeckmann <tobias@stoeckmann.org> | 2024-01-02 22:33:15 +0100 |
---|---|---|
committer | Dmitry V. Levin <ldv@strace.io> | 2024-01-03 17:28:06 +0000 |
commit | c0ca17b36aa850e33ecd4254e5445f798d885e3b (patch) | |
tree | 98d4ad1062725c86f0332d2c55527e486dcba695 /modules/pam_faillock/faillock_config.c | |
parent | 3a9cd90a97c64a66d2912df5109793ee9158858c (diff) | |
download | pam-c0ca17b36aa850e33ecd4254e5445f798d885e3b.tar.gz pam-c0ca17b36aa850e33ecd4254e5445f798d885e3b.tar.bz2 pam-c0ca17b36aa850e33ecd4254e5445f798d885e3b.zip |
pam_faillock: use getline
Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
Diffstat (limited to 'modules/pam_faillock/faillock_config.c')
-rw-r--r-- | modules/pam_faillock/faillock_config.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/modules/pam_faillock/faillock_config.c b/modules/pam_faillock/faillock_config.c index 5d796240..91c8001d 100644 --- a/modules/pam_faillock/faillock_config.c +++ b/modules/pam_faillock/faillock_config.c @@ -79,7 +79,8 @@ config_log(const pam_handle_t *pamh, int priority, const char *fmt, ...) int read_config_file(pam_handle_t *pamh, struct options *opts, const char *cfgfile) { - char linebuf[FAILLOCK_CONF_MAX_LINELEN+1]; + char *linebuf = NULL; + size_t n = 0; const char *fname = (cfgfile != NULL) ? cfgfile : FAILLOCK_DEFAULT_CONF; FILE *f = fopen(fname, "r"); @@ -100,15 +101,15 @@ read_config_file(pam_handle_t *pamh, struct options *opts, const char *cfgfile) return PAM_SERVICE_ERR; } - while (fgets(linebuf, sizeof(linebuf), f) != NULL) { + while (getline(&linebuf, &n, f) != -1) { size_t len; char *ptr; char *name; int eq; len = strlen(linebuf); - /* len cannot be 0 unless there is a bug in fgets */ if (len && linebuf[len - 1] != '\n' && !feof(f)) { + free(linebuf); (void) fclose(f); return PAM_SERVICE_ERR; } @@ -162,6 +163,7 @@ read_config_file(pam_handle_t *pamh, struct options *opts, const char *cfgfile) set_conf_opt(pamh, opts, name, ptr); } + free(linebuf); (void)fclose(f); return PAM_SUCCESS; } |