aboutsummaryrefslogtreecommitdiff
path: root/src/scp.c
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2012-10-08 19:47:46 +0200
committerAndreas Schneider <asn@cryptomilk.org>2012-10-09 11:09:34 +0200
commit6acce40a28b4f74806e1928ec6bdbe2d9da43b2c (patch)
tree4e65bad2abad364ffc13918de7bd601bcd4675c3 /src/scp.c
parent41269874f51b794ef93e05766df39dee010956f3 (diff)
downloadlibssh-6acce40a28b4f74806e1928ec6bdbe2d9da43b2c.tar.gz
libssh-6acce40a28b4f74806e1928ec6bdbe2d9da43b2c.tar.xz
libssh-6acce40a28b4f74806e1928ec6bdbe2d9da43b2c.zip
scp: Check return value of ssh_channel_poll.
Found by Coverity.
Diffstat (limited to 'src/scp.c')
-rw-r--r--src/scp.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/scp.c b/src/scp.c
index a2efa321..9be5744c 100644
--- a/src/scp.c
+++ b/src/scp.c
@@ -419,7 +419,11 @@ int ssh_scp_write(ssh_scp scp, const void *buffer, size_t len){
if(scp->processed + len > scp->filelen)
len = (size_t) (scp->filelen - scp->processed);
/* hack to avoid waiting for window change */
- ssh_channel_poll(scp->channel,0);
+ r = ssh_channel_poll(scp->channel, 0);
+ if (r == SSH_ERROR) {
+ scp->state = SSH_SCP_ERROR;
+ return SSH_ERROR;
+ }
w=ssh_channel_write(scp->channel,buffer,len);
if(w != SSH_ERROR)
scp->processed += w;