mirror of
https://git.libssh.org/projects/libssh.git
synced 2026-02-11 02:38:09 +09:00
poll: Check return value of ssh_poll_ctx_add()
Signed-off-by: Jakub Jelen <jjelen@redhat.com> Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
This commit is contained in:
15
src/poll.c
15
src/poll.c
@@ -637,14 +637,12 @@ int ssh_poll_ctx_add(ssh_poll_ctx ctx, ssh_poll_handle p)
|
|||||||
int ssh_poll_ctx_add_socket(ssh_poll_ctx ctx, ssh_socket s)
|
int ssh_poll_ctx_add_socket(ssh_poll_ctx ctx, ssh_socket s)
|
||||||
{
|
{
|
||||||
ssh_poll_handle p = NULL;
|
ssh_poll_handle p = NULL;
|
||||||
int ret;
|
|
||||||
|
|
||||||
p = ssh_socket_get_poll_handle(s);
|
p = ssh_socket_get_poll_handle(s);
|
||||||
if (p == NULL) {
|
if (p == NULL) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
ret = ssh_poll_ctx_add(ctx, p);
|
return ssh_poll_ctx_add(ctx, p);
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -948,6 +946,7 @@ int ssh_event_add_session(ssh_event event, ssh_session session)
|
|||||||
#ifdef WITH_SERVER
|
#ifdef WITH_SERVER
|
||||||
struct ssh_iterator *iterator = NULL;
|
struct ssh_iterator *iterator = NULL;
|
||||||
#endif
|
#endif
|
||||||
|
int rc;
|
||||||
|
|
||||||
if (event == NULL || event->ctx == NULL || session == NULL) {
|
if (event == NULL || event->ctx == NULL || session == NULL) {
|
||||||
return SSH_ERROR;
|
return SSH_ERROR;
|
||||||
@@ -962,7 +961,10 @@ int ssh_event_add_session(ssh_event event, ssh_session session)
|
|||||||
* session->default_poll_ctx->polls_used
|
* session->default_poll_ctx->polls_used
|
||||||
*/
|
*/
|
||||||
ssh_poll_ctx_remove(session->default_poll_ctx, p);
|
ssh_poll_ctx_remove(session->default_poll_ctx, p);
|
||||||
ssh_poll_ctx_add(event->ctx, p);
|
rc = ssh_poll_ctx_add(event->ctx, p);
|
||||||
|
if (rc != SSH_OK) {
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
/* associate the pollhandler with a session so we can put it back
|
/* associate the pollhandler with a session so we can put it back
|
||||||
* at ssh_event_free()
|
* at ssh_event_free()
|
||||||
*/
|
*/
|
||||||
@@ -1110,7 +1112,10 @@ int ssh_event_remove_session(ssh_event event, ssh_session session)
|
|||||||
*/
|
*/
|
||||||
ssh_poll_ctx_remove(event->ctx, p);
|
ssh_poll_ctx_remove(event->ctx, p);
|
||||||
p->session = NULL;
|
p->session = NULL;
|
||||||
ssh_poll_ctx_add(session->default_poll_ctx, p);
|
rc = ssh_poll_ctx_add(session->default_poll_ctx, p);
|
||||||
|
if (rc != SSH_OK) {
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
rc = SSH_OK;
|
rc = SSH_OK;
|
||||||
/*
|
/*
|
||||||
* Restart the loop!
|
* Restart the loop!
|
||||||
|
|||||||
@@ -744,7 +744,10 @@ int ssh_handle_packets(ssh_session session, int timeout)
|
|||||||
ssh_set_error_oom(session);
|
ssh_set_error_oom(session);
|
||||||
return SSH_ERROR;
|
return SSH_ERROR;
|
||||||
}
|
}
|
||||||
ssh_poll_ctx_add(ctx, spoll);
|
rc = ssh_poll_ctx_add(ctx, spoll);
|
||||||
|
if (rc != SSH_OK) {
|
||||||
|
return SSH_ERROR;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (timeout == SSH_TIMEOUT_USER) {
|
if (timeout == SSH_TIMEOUT_USER) {
|
||||||
|
|||||||
Reference in New Issue
Block a user