diff options
-rw-r--r-- | include/libssh/libssh.h | 2 | ||||
-rw-r--r-- | libssh/options.c | 37 |
2 files changed, 27 insertions, 12 deletions
diff --git a/include/libssh/libssh.h b/include/libssh/libssh.h index 33c72c9..ee14ef2 100644 --- a/include/libssh/libssh.h +++ b/include/libssh/libssh.h @@ -313,7 +313,7 @@ int ssh_options_set_port(SSH_OPTIONS *opt, unsigned int port); 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_fd(SSH_OPTIONS *opt, socket_t fd); -void ssh_options_set_bind(SSH_OPTIONS *opt, const char *bindaddr, int port); +int ssh_options_set_bind(SSH_OPTIONS *opt, const char *bindaddr, int port); void ssh_options_set_identity(SSH_OPTIONS *opt, const char *identity); void ssh_options_set_status_callback(SSH_OPTIONS *opt, void (*callback) (void *arg, float status), void *arg); diff --git a/libssh/options.c b/libssh/options.c index 74a4d31..77f44a7 100644 --- a/libssh/options.c +++ b/libssh/options.c @@ -326,18 +326,33 @@ int ssh_options_set_fd(SSH_OPTIONS *opt, socket_t fd) { return 0; } -/** In case your client has multiple IP adresses, select the local address - * and port to use for the socket.\n - * If the address or port is not bindable, it may be impossible to - * connect. - * \brief set the local address and port binding - * \param opt options structure - * \param bindaddr bind address in form of hostname or ip address - * \param port port number to bind +/** + * @brief Set the local address and port binding. + * + * In case your client has multiple IP adresses, select the local address and + * port to use for the socket.\n + * If the address or port is not bindable, it may be impossible to connect. + * + * @param opt The options structure to use. + * + * @param bindaddr The bind address in form of hostname or ip address. + * + * @param port The port number to bind. + * + * @return 0 on success, < 0 on error. */ -void ssh_options_set_bind(SSH_OPTIONS *opt, const char *bindaddr, int port){ - opt->bindaddr=strdup(bindaddr); - opt->bindport=port; +int ssh_options_set_bind(SSH_OPTIONS *opt, const char *bindaddr, int port) { + if (opt == NULL || bindaddr == NULL) { + return -1; + } + + opt->bindaddr = strdup(bindaddr); + if (opt->bindaddr == NULL) { + return -1; + } + opt->bindport = port; + + return 0; } /** the ssh directory is used for files like known_hosts and |