Properly propagate out of memory errors.

This commit is contained in:
Dan Fandrich 2007-04-13 18:28:10 +00:00
parent d79f906b52
commit 197764afcc
3 changed files with 10 additions and 5 deletions

View File

@ -1036,6 +1036,10 @@ ssize_t _libssh2_channel_read_ex(LIBSSH2_CHANNEL *channel,
do { do {
rc = libssh2_packet_read(session); rc = libssh2_packet_read(session);
} while (rc > 0); } while (rc > 0);
if((rc < 0) && (rc != PACKET_EAGAIN)) {
return rc;
}
rc = 0; rc = 0;
/* restore blocking state */ /* restore blocking state */

View File

@ -317,13 +317,13 @@ static int libssh2_hostkey_method_ssh_dss_signv(LIBSSH2_SESSION *session, unsign
unsigned int i; unsigned int i;
*signature = LIBSSH2_ALLOC(session, 2 * SHA_DIGEST_LENGTH); *signature = LIBSSH2_ALLOC(session, 2 * SHA_DIGEST_LENGTH);
*signature_len = 2 * SHA_DIGEST_LENGTH; if (!*signature) {
memset(*signature, 0, 2 * SHA_DIGEST_LENGTH);
if (!(*signature)) {
return -1; return -1;
} }
*signature_len = 2 * SHA_DIGEST_LENGTH;
memset(*signature, 0, 2 * SHA_DIGEST_LENGTH);
libssh2_sha1_init(&ctx); libssh2_sha1_init(&ctx);
for(i = 0; i < veccount; i++) { for(i = 0; i < veccount; i++) {
libssh2_sha1_update(ctx, datavec[i].iov_base, datavec[i].iov_len); libssh2_sha1_update(ctx, datavec[i].iov_base, datavec[i].iov_len);

View File

@ -220,7 +220,8 @@ static libssh2pack_t fullpacket(LIBSSH2_SESSION *session,
debugdump(session, "libssh2_packet_read() plain", debugdump(session, "libssh2_packet_read() plain",
p->payload, payload_len); p->payload, payload_len);
libssh2_packet_add(session, p->payload, payload_len, macstate); if (libssh2_packet_add(session, p->payload, payload_len, macstate) < 0)
return PACKET_FAIL;
return packet_type; return packet_type;
} }