diff --git a/include/libssh/libssh.h b/include/libssh/libssh.h index ad81ee96..33c72c94 100644 --- a/include/libssh/libssh.h +++ b/include/libssh/libssh.h @@ -312,7 +312,7 @@ int ssh_options_set_username(SSH_OPTIONS *opt, const char *username); 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); -void ssh_options_set_fd(SSH_OPTIONS *opt, socket_t fd); +int ssh_options_set_fd(SSH_OPTIONS *opt, socket_t fd); void 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) diff --git a/libssh/options.c b/libssh/options.c index af20d886..74a4d319 100644 --- a/libssh/options.c +++ b/libssh/options.c @@ -304,16 +304,26 @@ int ssh_options_set_username(SSH_OPTIONS *opt, const char *username) { return 0; } -/** If you wish to open the socket yourself for a reason - * or another, set the file descriptor.\n - * don't forget to use ssh_option_set_hostname() as the hostname - * is used as a key in the known_host mechanism - * \brief set a file descriptor for connection - * \param opt options structure - * \param fd an opened file descriptor to use +/** + * @brief Set a file descriptor for connection. + * + * If you wish to open the socket yourself for a reason or another, set the + * file descriptor. Don't forget to use ssh_option_set_hostname() as the + * hostname is used as a key in the known_host mechanism. + * + * @param opt The options structure to use. + * + * @param fd An opened file descriptor to use. + * + * @return 0 on success, < 0 on error. */ -void ssh_options_set_fd(SSH_OPTIONS *opt, socket_t fd){ - opt->fd=fd; +int ssh_options_set_fd(SSH_OPTIONS *opt, socket_t fd) { + if (opt == NULL) { + return -1; + } + opt->fd = fd; + + return 0; } /** In case your client has multiple IP adresses, select the local address