diff options
Diffstat (limited to 'libssh/options.c')
-rw-r--r-- | libssh/options.c | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/libssh/options.c b/libssh/options.c index 6f8e9077..2696f6ef 100644 --- a/libssh/options.c +++ b/libssh/options.c @@ -456,14 +456,27 @@ void ssh_options_set_rsa_server_key(SSH_OPTIONS *opt, const char *rsakey){ opt->rsakey=strdup(rsakey); } -/** \brief set the server banner sent to clients - * \param opt options structure - * \param banner a text banner to be shown +/** + * @brief Set the server banner sent to clients. + * + * @param opt The options structure to use. + * + * @param banner A text banner to be shown. + * + * @return 0 on success, < 0 on error. */ -void ssh_options_set_banner(SSH_OPTIONS *opt, const char *banner){ - if(opt->banner) - free(opt->banner); - opt->banner=strdup(banner); +int ssh_options_set_banner(SSH_OPTIONS *opt, const char *banner) { + if (opt == NULL || banner == NULL) { + return -1; + } + + SAFE_FREE(opt->banner); + opt->banner = strdup(banner); + if (opt->banner == NULL) { + return -1; + } + + return 0; } /** the methods are:\n |