commit f760a6dc5853869d21051c7ed6015117941c1155
Author: Dmitry V. Levin <ldv(a)altlinux.org>
Date: Wed Jan 22 02:34:03 2014 +0000
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 files changed, 5 insertions(+), 1 deletions(-)
---
diff --git a/libpam_misc/misc_conv.c b/libpam_misc/misc_conv.c
index 3f74eea..be53f34 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 */
Show replies by date