From f760a6dc5853869d21051c7ed6015117941c1155 Mon Sep 17 00:00:00 2001 From: "Dmitry V. Levin" Date: Wed, 22 Jan 2014 02:34:03 +0000 Subject: libpam_misc: fix an inconsistency in handling memory allocation errors When misc_conv fails to allocate memory for pam_response array, it returns PAM_CONV_ERR. However, when read_string fails to allocate memory for a response string, it loses the response string and silently ignores the error, with net result as if EOF has been read. * libpam_misc/misc_conv.c (read_string): Use strdup instead of x_strdup, the latter is of no benefit in this case. Do not ignore potential memory allocation errors returned by strdup, forward them to misc_conv. --- libpam_misc/misc_conv.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/libpam_misc/misc_conv.c b/libpam_misc/misc_conv.c index 3f74eeae..be53f343 100644 --- a/libpam_misc/misc_conv.c +++ b/libpam_misc/misc_conv.c @@ -210,8 +210,12 @@ static int read_string(int echo, const char *prompt, char **retstr) } line[nc] = '\0'; } - *retstr = x_strdup(line); + *retstr = strdup(line); _pam_overwrite(line); + if (!*retstr) { + D(("no memory for response string")); + nc = -1; + } goto cleanexit; /* return malloc()ed string */ -- cgit v1.2.3