Improve and document ssh_get_banner().
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@483 7dcaeef0-15fb-0310-b436-a5af3365683c
Этот коммит содержится в:
родитель
1f1e9dc15b
Коммит
160f6a08d0
@ -33,34 +33,49 @@
|
||||
if (opt->connect_status_function) \
|
||||
opt->connect_status_function(opt->connect_status_arg, status); \
|
||||
} while (0)
|
||||
/* simply gets a banner from a socket */
|
||||
|
||||
char *ssh_get_banner(SSH_SESSION *session){
|
||||
char buffer[128];
|
||||
int i = 0;
|
||||
char *ret;
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @brief Get a banner from a socket.
|
||||
*
|
||||
* The caller has to free memroy.
|
||||
*
|
||||
* @param session The session to get the banner from.
|
||||
*
|
||||
* @return A newly allocated string with the banner or NULL on error.
|
||||
*/
|
||||
char *ssh_get_banner(SSH_SESSION *session) {
|
||||
char buffer[128] = {0};
|
||||
char *str = NULL;
|
||||
int i;
|
||||
|
||||
enter_function();
|
||||
while (i < 127) {
|
||||
if(ssh_socket_read(session->socket, &buffer[i], 1)!= SSH_OK){
|
||||
ssh_set_error(session,SSH_FATAL,"Remote host closed connection");
|
||||
|
||||
for (i = 0; i < 127; i++) {
|
||||
if (ssh_socket_read(session->socket, &buffer[i], 1) != SSH_OK) {
|
||||
ssh_set_error(session, SSH_FATAL, "Remote host closed connection");
|
||||
leave_function();
|
||||
return NULL;
|
||||
}
|
||||
if (buffer[i] == '\r')
|
||||
buffer[i] = 0;
|
||||
|
||||
if (buffer[i] == '\r') {
|
||||
buffer[i] = '\0';
|
||||
}
|
||||
if (buffer[i] == '\n') {
|
||||
buffer[i] = 0;
|
||||
ret = strdup(buffer);
|
||||
if (ret == NULL) {
|
||||
buffer[i] = '\0';
|
||||
str = strdup(buffer);
|
||||
if (str == NULL) {
|
||||
leave_function();
|
||||
return NULL;
|
||||
}
|
||||
leave_function();
|
||||
return ret;
|
||||
return str;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
ssh_set_error(session,SSH_FATAL,"Too large banner");
|
||||
|
||||
ssh_set_error(session, SSH_FATAL, "Too large banner");
|
||||
|
||||
leave_function();
|
||||
return NULL;
|
||||
}
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user