diff options
author | Dmitry V. Krivenok <krivenok@orangesystem.ru> | 2009-09-10 16:08:41 +0400 |
---|---|---|
committer | Andreas Schneider <mail@cynapses.org> | 2009-09-10 14:35:02 +0200 |
commit | 18bce136178029b52cbc7097d85cc0e50da887d8 (patch) | |
tree | 880b55e0e0e1ecfccb068459f81a21eb87c4a2e9 | |
parent | 2a10019f82b9db58d7821ef93febc42b54042c92 (diff) | |
download | libssh-18bce136178029b52cbc7097d85cc0e50da887d8.tar.gz libssh-18bce136178029b52cbc7097d85cc0e50da887d8.tar.xz libssh-18bce136178029b52cbc7097d85cc0e50da887d8.zip |
Fixed possible memory leak in lowercase function.
If user passed NULL pointer to lowercase() function, duplicated
string "new" wasn't freed before return.
Signed-off-by: Dmitry V. Krivenok <krivenok@orangesystem.ru>
Signed-off-by: Andreas Schneider <mail@cynapses.org>
-rw-r--r-- | libssh/keyfiles.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/libssh/keyfiles.c b/libssh/keyfiles.c index 0e73fcba..f21cbe1f 100644 --- a/libssh/keyfiles.c +++ b/libssh/keyfiles.c @@ -1019,11 +1019,12 @@ static int alldigits(const char *s) { */ static char *lowercase(const char* str) { char *p = 0; - char *new = strdup(str); + char *new = NULL; - if((str == NULL) || (new == NULL)) { - return NULL; - } + if(str == NULL) return NULL; + + new = strdup(str); + if(new == NULL) return NULL; for (p = new; *p; p++) { *p = tolower(*p); |