aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libssh/buffer.c4
-rw-r--r--libssh/channels.c5
-rw-r--r--libssh/wrapper.c2
3 files changed, 8 insertions, 3 deletions
diff --git a/libssh/buffer.c b/libssh/buffer.c
index 9cdf859..ade6f02 100644
--- a/libssh/buffer.c
+++ b/libssh/buffer.c
@@ -31,10 +31,12 @@ BUFFER *buffer_new(){
}
void buffer_free(BUFFER *buffer){
+// printf("buffer %p : free(%p);\n",buffer,buffer->data);
if(buffer->data){
memset(buffer->data,0,buffer->allocated); /* burn the data */
free(buffer->data);
}
+ memset(buffer,'x',sizeof (*buffer));
free(buffer);
}
@@ -46,7 +48,9 @@ void buffer_reinit(BUFFER *buffer){
static void realloc_buffer(BUFFER *buffer,int needed){
needed=(needed+0x7f) & ~0x7f;
+// printf("buffer %p : realloc(%x,%d)=",buffer,buffer->data,needed);
buffer->data=realloc(buffer->data,needed);
+// printf("%p\n",buffer->data);
buffer->allocated=needed;
}
diff --git a/libssh/channels.c b/libssh/channels.c
index 83686af..78b66cb 100644
--- a/libssh/channels.c
+++ b/libssh/channels.c
@@ -722,7 +722,8 @@ static int channel_protocol_select(CHANNEL **rchans, CHANNEL **wchans, CHANNEL *
ssh_handle_packets(chan->session);
}
if( (chan->stdout_buffer && buffer_get_len(chan->stdout_buffer)>0) ||
- (chan->stderr_buffer && buffer_get_len(chan->stderr_buffer)>0)){
+ (chan->stderr_buffer && buffer_get_len(chan->stderr_buffer)>0) ||
+ chan->remote_eof){
rout[j]=chan;
++j;
}
@@ -741,7 +742,7 @@ static int channel_protocol_select(CHANNEL **rchans, CHANNEL **wchans, CHANNEL *
j=0;
for(i=0;echans[i];++i){
chan=echans[i];
- if(chan->session->fd==-1 || !chan->open || chan->remote_eof || chan->session->data_except){
+ if(chan->session->fd==-1 || !chan->open || chan->session->data_except){
eout[j]=chan;
++j;
}
diff --git a/libssh/wrapper.c b/libssh/wrapper.c
index f6abb3b..a731d1e 100644
--- a/libssh/wrapper.c
+++ b/libssh/wrapper.c
@@ -239,7 +239,7 @@ void sha1(unsigned char *digest,int len,unsigned char *hash){
}
MD5CTX md5_init(){
- MD5CTX c=malloc(sizeof(c));
+ MD5CTX c=malloc(sizeof(*c));
MD5_Init(c);
return c;
}