aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libssh/messages.c20
-rw-r--r--samplesshd.c13
2 files changed, 30 insertions, 3 deletions
diff --git a/libssh/messages.c b/libssh/messages.c
index d5f6d0bd..0f0aa363 100644
--- a/libssh/messages.c
+++ b/libssh/messages.c
@@ -380,6 +380,26 @@ void ssh_message_free(SSH_MESSAGE *msg){
free(msg->auth_request.password);
}
break;
+ case SSH_CHANNEL_REQUEST_OPEN:
+ if(msg->channel_request_open.originator)
+ free(msg->channel_request_open.originator);
+ if(msg->channel_request_open.destination)
+ free(msg->channel_request_open.destination);
+ break;
+ case SSH_CHANNEL_REQUEST:
+ if(msg->channel_request.TERM)
+ free(msg->channel_request.TERM);
+ if(msg->channel_request.modes)
+ free(msg->channel_request.modes);
+ if(msg->channel_request.var_name)
+ free(msg->channel_request.var_name);
+ if(msg->channel_request.var_value)
+ free(msg->channel_request.var_value);
+ if(msg->channel_request.command)
+ free(msg->channel_request.command);
+ if(msg->channel_request.subsystem)
+ free(msg->channel_request.subsystem);
+ break;
}
memset(msg,0,sizeof(*msg));
free(msg);
diff --git a/samplesshd.c b/samplesshd.c
index 141dc127..7fe93282 100644
--- a/samplesshd.c
+++ b/samplesshd.c
@@ -41,6 +41,7 @@ int main(int argc, char **argv){
CHANNEL *chan;
int auth=0;
int sftp=0;
+ int i;
ssh_options_getopt(options,&argc,argv);
ssh_options_set_dsa_server_key(options,"/etc/ssh/ssh_host_dsa_key");
ssh_options_set_rsa_server_key(options,"/etc/ssh/ssh_host_rsa_key");
@@ -116,12 +117,12 @@ int main(int argc, char **argv){
do {
message=ssh_message_get(session);
if(message && ssh_message_type(message)==SSH_CHANNEL_REQUEST &&
- ssh_message_subtype(message)==SSH_CHANNEL_REQUEST_SUBSYSTEM){
- if(!strcmp(ssh_message_channel_request_subsystem(message),"sftp")){
+ ssh_message_subtype(message)==SSH_CHANNEL_REQUEST_SHELL){
+// if(!strcmp(ssh_message_channel_request_subsystem(message),"sftp")){
sftp=1;
ssh_message_channel_request_reply_success(message);
break;
- }
+ // }
}
if(!sftp){
ssh_message_reply_default(message);
@@ -133,6 +134,12 @@ int main(int argc, char **argv){
return 1;
}
printf("it works !\n");
+ BUFFER *buf=buffer_new();
+ do{
+ i=channel_read(chan,buf,0,0);
+ if(i>0)
+ write(1,buffer_get(buf),buffer_get_len(buf));
+ } while (i>0);
return 0;
}