mirror of
https://git.libssh.org/projects/libssh.git
synced 2025-07-31 00:03:07 +03:00
examples: Fix some memory leaks.
This commit is contained in:
@ -50,6 +50,7 @@ int main(void) {
|
|||||||
ssh_channel_send_eof(channel);
|
ssh_channel_send_eof(channel);
|
||||||
ssh_channel_close(channel);
|
ssh_channel_close(channel);
|
||||||
ssh_channel_free(channel);
|
ssh_channel_free(channel);
|
||||||
|
ssh_disconnect(session);
|
||||||
ssh_free(session);
|
ssh_free(session);
|
||||||
ssh_finalize();
|
ssh_finalize();
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ program.
|
|||||||
#include <libssh/libsshpp.hpp>
|
#include <libssh/libsshpp.hpp>
|
||||||
|
|
||||||
int main(int argc, const char **argv){
|
int main(int argc, const char **argv){
|
||||||
ssh::Session session,s2;
|
ssh::Session session;
|
||||||
try {
|
try {
|
||||||
if(argc>1)
|
if(argc>1)
|
||||||
session.setOption(SSH_OPTIONS_HOST,argv[1]);
|
session.setOption(SSH_OPTIONS_HOST,argv[1]);
|
||||||
@ -24,10 +24,10 @@ int main(int argc, const char **argv){
|
|||||||
session.setOption(SSH_OPTIONS_HOST,"localhost");
|
session.setOption(SSH_OPTIONS_HOST,"localhost");
|
||||||
session.connect();
|
session.connect();
|
||||||
session.userauthAutopubkey();
|
session.userauthAutopubkey();
|
||||||
|
session.disconnect();
|
||||||
} catch (ssh::SshException e){
|
} catch (ssh::SshException e){
|
||||||
std::cout << "Error during connection : ";
|
std::cout << "Error during connection : ";
|
||||||
std::cout << e.getError() << std::endl;
|
std::cout << e.getError() << std::endl;
|
||||||
}
|
}
|
||||||
//s2=session;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -64,16 +64,21 @@ static void create_files(ssh_session session){
|
|||||||
}
|
}
|
||||||
if(ssh_channel_open_session(channel) != SSH_OK){
|
if(ssh_channel_open_session(channel) != SSH_OK){
|
||||||
fprintf(stderr,"Error creating channel: %s\n",ssh_get_error(session));
|
fprintf(stderr,"Error creating channel: %s\n",ssh_get_error(session));
|
||||||
|
ssh_channel_free(channel);
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
if(ssh_channel_request_exec(channel,createcommand) != SSH_OK){
|
if(ssh_channel_request_exec(channel,createcommand) != SSH_OK){
|
||||||
fprintf(stderr,"Error executing command: %s\n",ssh_get_error(session));
|
fprintf(stderr,"Error executing command: %s\n",ssh_get_error(session));
|
||||||
|
ssh_channel_close(channel);
|
||||||
|
ssh_channel_free(channel);
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
while(!ssh_channel_is_eof(channel)){
|
while(!ssh_channel_is_eof(channel)){
|
||||||
ssh_channel_read(channel,buffer,1,1);
|
ssh_channel_read(channel,buffer,1,1);
|
||||||
if (write(1,buffer,1) < 0) {
|
if (write(1,buffer,1) < 0) {
|
||||||
fprintf(stderr, "Error writing to buffer\n");
|
fprintf(stderr, "Error writing to buffer\n");
|
||||||
|
ssh_channel_close(channel);
|
||||||
|
ssh_channel_free(channel);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -91,6 +96,7 @@ static int fetch_files(ssh_session session){
|
|||||||
ssh_scp scp=ssh_scp_new(session, SSH_SCP_READ | SSH_SCP_RECURSIVE, "/tmp/libssh_tests/*");
|
ssh_scp scp=ssh_scp_new(session, SSH_SCP_READ | SSH_SCP_RECURSIVE, "/tmp/libssh_tests/*");
|
||||||
if(ssh_scp_init(scp) != SSH_OK){
|
if(ssh_scp_init(scp) != SSH_OK){
|
||||||
fprintf(stderr,"error initializing scp: %s\n",ssh_get_error(session));
|
fprintf(stderr,"error initializing scp: %s\n",ssh_get_error(session));
|
||||||
|
ssh_scp_free(scp);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
printf("Trying to download 3 files (a,b,d) and 1 directory (c)\n");
|
printf("Trying to download 3 files (a,b,d) and 1 directory (c)\n");
|
||||||
@ -108,12 +114,16 @@ static int fetch_files(ssh_session session){
|
|||||||
r=ssh_scp_read(scp,buffer,sizeof(buffer));
|
r=ssh_scp_read(scp,buffer,sizeof(buffer));
|
||||||
if(r==SSH_ERROR){
|
if(r==SSH_ERROR){
|
||||||
fprintf(stderr,"Error reading scp: %s\n",ssh_get_error(session));
|
fprintf(stderr,"Error reading scp: %s\n",ssh_get_error(session));
|
||||||
|
ssh_scp_close(scp);
|
||||||
|
ssh_scp_free(scp);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
printf("done\n");
|
printf("done\n");
|
||||||
break;
|
break;
|
||||||
case SSH_ERROR:
|
case SSH_ERROR:
|
||||||
fprintf(stderr,"Error: %s\n",ssh_get_error(session));
|
fprintf(stderr,"Error: %s\n",ssh_get_error(session));
|
||||||
|
ssh_scp_close(scp);
|
||||||
|
ssh_scp_free(scp);
|
||||||
return -1;
|
return -1;
|
||||||
case SSH_SCP_REQUEST_WARNING:
|
case SSH_SCP_REQUEST_WARNING:
|
||||||
fprintf(stderr,"Warning: %s\n",ssh_scp_request_get_warning(scp));
|
fprintf(stderr,"Warning: %s\n",ssh_scp_request_get_warning(scp));
|
||||||
@ -134,6 +144,8 @@ static int fetch_files(ssh_session session){
|
|||||||
}
|
}
|
||||||
} while (1);
|
} while (1);
|
||||||
end:
|
end:
|
||||||
|
ssh_scp_close(scp);
|
||||||
|
ssh_scp_free(scp);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -147,6 +159,7 @@ int main(int argc, char **argv){
|
|||||||
create_files(session);
|
create_files(session);
|
||||||
fetch_files(session);
|
fetch_files(session);
|
||||||
ssh_disconnect(session);
|
ssh_disconnect(session);
|
||||||
|
ssh_free(session);
|
||||||
ssh_finalize();
|
ssh_finalize();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user