diff options
author | Andreas Schneider <mail@cynapses.org> | 2009-04-07 18:46:29 +0000 |
---|---|---|
committer | Andreas Schneider <mail@cynapses.org> | 2009-04-07 18:46:29 +0000 |
commit | 8c05aab03d687915ab87b47922e95c8f608b0250 (patch) | |
tree | b1b8837f7a990165d75e597e46b605c45ac3dedc /libssh/dh.c | |
parent | 323ee63a1d267548b60492a4f94ade2e29d6fce7 (diff) | |
download | libssh-8c05aab03d687915ab87b47922e95c8f608b0250.tar.gz libssh-8c05aab03d687915ab87b47922e95c8f608b0250.tar.xz libssh-8c05aab03d687915ab87b47922e95c8f608b0250.zip |
Add return value and error checking for hash buffer cookie functions.
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@419 7dcaeef0-15fb-0310-b436-a5af3365683c
Diffstat (limited to 'libssh/dh.c')
-rw-r--r-- | libssh/dh.c | 52 |
1 files changed, 41 insertions, 11 deletions
diff --git a/libssh/dh.c b/libssh/dh.c index 48a7da8..1d825b2 100644 --- a/libssh/dh.c +++ b/libssh/dh.c @@ -502,20 +502,50 @@ error: return rc; } -void hashbufout_add_cookie(SSH_SESSION *session){ - session->out_hashbuf=buffer_new(); - buffer_add_u8(session->out_hashbuf,20); - if(session->server) - buffer_add_data(session->out_hashbuf,session->server_kex.cookie,16); - else - buffer_add_data(session->out_hashbuf,session->client_kex.cookie,16); +int hashbufout_add_cookie(SSH_SESSION *session) { + session->out_hashbuf = buffer_new(); + if (session->out_hashbuf == NULL) { + return -1; + } + + if (buffer_add_u8(session->out_hashbuf, 20) < 0) { + buffer_free(session->out_hashbuf); + return -1; + } + + if (session->server) { + if (buffer_add_data(session->out_hashbuf, + session->server_kex.cookie, 16) < 0) { + buffer_free(session->out_hashbuf); + return -1; + } + } else { + if (buffer_add_data(session->out_hashbuf, + session->client_kex.cookie, 16) < 0) { + buffer_free(session->out_hashbuf); + return -1; + } + } + + return 0; } +int hashbufin_add_cookie(SSH_SESSION *session, unsigned char *cookie) { + session->in_hashbuf = buffer_new(); + if (session->in_hashbuf == NULL) { + return -1; + } + + if (buffer_add_u8(session->in_hashbuf, 20) < 0) { + buffer_free(session->in_hashbuf); + return -1; + } + if (buffer_add_data(session->in_hashbuf,cookie, 16) < 0) { + buffer_free(session->in_hashbuf); + return -1; + } -void hashbufin_add_cookie(SSH_SESSION *session,unsigned char *cookie){ - session->in_hashbuf=buffer_new(); - buffer_add_u8(session->in_hashbuf,20); - buffer_add_data(session->in_hashbuf,cookie,16); + return 0; } /* TODO FIXME add return value for memory checks */ |