diff options
-rw-r--r-- | examples/libssh_scp.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/examples/libssh_scp.c b/examples/libssh_scp.c index b7471da6..9027ef99 100644 --- a/examples/libssh_scp.c +++ b/examples/libssh_scp.c @@ -84,9 +84,15 @@ static int opts(int argc, char **argv){ } static struct location *parse_location(char *loc){ - struct location *location=malloc(sizeof(struct location)); + struct location *location; char *ptr; + location = malloc(sizeof(struct location)); + if (location == NULL) { + return NULL; + } + memset(location, 0, sizeof(struct location)); + location->host=location->user=NULL; ptr=strchr(loc,':'); if(ptr != NULL){ @@ -123,6 +129,7 @@ static int open_location(struct location *loc, int flag){ if(ssh_scp_init(loc->scp)==SSH_ERROR){ fprintf(stderr,"error : %s\n",ssh_get_error(loc->session)); ssh_scp_free(loc->scp); + loc->scp = NULL; return -1; } return 0; @@ -140,6 +147,7 @@ static int open_location(struct location *loc, int flag){ if(ssh_scp_init(loc->scp)==SSH_ERROR){ fprintf(stderr,"error : %s\n",ssh_get_error(loc->session)); ssh_scp_free(loc->scp); + loc->scp = NULL; return -1; } return 0; |