diff options
author | Andreas Schneider <mail@cynapses.org> | 2009-04-03 08:29:36 +0000 |
---|---|---|
committer | Andreas Schneider <mail@cynapses.org> | 2009-04-03 08:29:36 +0000 |
commit | 0856ba3008efb40fcc7d10ba4b2fcd15e7105456 (patch) | |
tree | b0ffaf9f77e2ac4c25a96b0b34379a454b52e4ef /libssh/server.c | |
parent | 8d66a455f7bc796cf21ab5fb37c70d01920739b2 (diff) | |
download | libssh-0856ba3008efb40fcc7d10ba4b2fcd15e7105456.tar.gz libssh-0856ba3008efb40fcc7d10ba4b2fcd15e7105456.tar.xz libssh-0856ba3008efb40fcc7d10ba4b2fcd15e7105456.zip |
Add memory error checks.
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@375 7dcaeef0-15fb-0310-b436-a5af3365683c
Diffstat (limited to 'libssh/server.c')
-rw-r--r-- | libssh/server.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/libssh/server.c b/libssh/server.c index 6cc0087b..e7eb0edb 100644 --- a/libssh/server.c +++ b/libssh/server.c @@ -214,7 +214,7 @@ extern char *supported_methods[]; static int server_set_kex(SSH_SESSION * session) { KEX *server = &session->server_kex; SSH_OPTIONS *options = session->options; - int i; + int i, j; char *wanted; memset(server,0,sizeof(KEX)); // the program might ask for a specific cookie to be sent. useful for server @@ -239,6 +239,13 @@ static int server_set_kex(SSH_SESSION * session) { if (!(wanted = options->wanted_methods[i])) wanted = supported_methods[i]; server->methods[i] = strdup(wanted); + if (server->methods[i] == NULL) { + for (j = i - 1; j <= 0; j--) { + SAFE_FREE(server->methods[j]); + } + SAFE_FREE(server->methods); + return -1; + } //printf("server->methods[%d]=%s\n",i,wanted); } return 0; |