Properly propagate out of memory errors.
This commit is contained in:
parent
d79f906b52
commit
197764afcc
@ -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 */
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user