aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormilo <milo@r0ot.me>2011-04-20 04:09:28 +0200
committermilo <milo@r0ot.me>2011-04-20 05:05:07 +0200
commiteace59d3eaad413fd846d1c8b4c926285f6cd5ab (patch)
treed873e3e1a16e400e4444836390adcc54458d9406
parent27313334578f4acb7ccf0687bba7f76b2febd569 (diff)
downloadlibssh-eace59d3eaad413fd846d1c8b4c926285f6cd5ab.tar.gz
libssh-eace59d3eaad413fd846d1c8b4c926285f6cd5ab.tar.xz
libssh-eace59d3eaad413fd846d1c8b4c926285f6cd5ab.zip
[poll] avoid infinite loop in ssh_poll_ctx_free()
-rw-r--r--src/poll.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/poll.c b/src/poll.c
index ed2924c..48991e9 100644
--- a/src/poll.c
+++ b/src/poll.c
@@ -495,7 +495,12 @@ void ssh_poll_ctx_free(ssh_poll_ctx ctx) {
/* force poll object removal */
if (p->cb && p->cb(p, fd, POLLERR, p->cb_data) < 0) {
- used = ctx->polls_used;
+ if(ctx->polls_used < used) {
+ used = ctx->polls_used;
+ } else {
+ /* nothing to do */
+ i++;
+ }
} else {
i++;
}