Improve ssh_options_set_username().

git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@349 7dcaeef0-15fb-0310-b436-a5af3365683c
This commit is contained in:
Andreas Schneider
2009-04-02 10:18:01 +00:00
parent ab54736b5d
commit 8de3dc44ca
3 changed files with 30 additions and 11 deletions

View File

@@ -308,7 +308,7 @@ SSH_OPTIONS *ssh_options_new(void);
SSH_OPTIONS *ssh_options_copy(SSH_OPTIONS *opt); SSH_OPTIONS *ssh_options_copy(SSH_OPTIONS *opt);
void ssh_options_free(SSH_OPTIONS *opt); void ssh_options_free(SSH_OPTIONS *opt);
int ssh_options_set_wanted_algos(SSH_OPTIONS *opt, int algo, const char *list); int ssh_options_set_wanted_algos(SSH_OPTIONS *opt, int algo, const char *list);
void ssh_options_set_username(SSH_OPTIONS *opt, const char *username); int ssh_options_set_username(SSH_OPTIONS *opt, const char *username);
void ssh_options_set_port(SSH_OPTIONS *opt, unsigned int port); void ssh_options_set_port(SSH_OPTIONS *opt, unsigned int port);
int ssh_options_getopt(SSH_OPTIONS *options, int *argcptr, char **argv); int ssh_options_getopt(SSH_OPTIONS *options, int *argcptr, char **argv);
int ssh_options_set_host(SSH_OPTIONS *opt, const char *host); int ssh_options_set_host(SSH_OPTIONS *opt, const char *host);

View File

@@ -257,15 +257,28 @@ int ssh_options_set_host(SSH_OPTIONS *opt, const char *hostname){
return 0; return 0;
} }
/** \brief set username for authentication /**
* \bug this should not be set at options time * @brief Set the username for authentication
* \param opt options structure *
* \param username user name to authenticate * @param opt The options structure to use.
*
* @param username The username to authenticate.
*
* @return 0 on success, -1 on error.
*
* @bug this should not be set at options time
*/ */
void ssh_options_set_username(SSH_OPTIONS *opt, const char *username){ int ssh_options_set_username(SSH_OPTIONS *opt, const char *username) {
if(opt->username) if (opt->username) {
free(opt->username); SAFE_FREE(opt->username);
opt->username=strdup(username); }
opt->username = strdup(username);
if (opt->username == NULL) {
return -1;
}
return 0;
} }
/** If you wish to open the socket yourself for a reason /** If you wish to open the socket yourself for a reason

View File

@@ -420,8 +420,14 @@ int main(int argc, char **argv){
} }
opts(argc,argv); opts(argc,argv);
signal(SIGTERM, do_exit); signal(SIGTERM, do_exit);
if(user)
ssh_options_set_username(options,user); if (user) {
if (ssh_options_set_username(options,user) < 0) {
ssh_options_free(options);
return 1;
}
}
if (ssh_options_set_host(options,host) < 0) { if (ssh_options_set_host(options,host) < 0) {
ssh_options_free(options); ssh_options_free(options);
return 1; return 1;