diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2018-09-25 16:00:26 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2018-10-24 09:48:35 +0200 |
commit | bc72ec582168ca4fd9e5f64f385f1de7695fca71 (patch) | |
tree | 5fdf551638fcf2a9bb3bf64e87f62db9ae8255e8 /src | |
parent | 54ec81db2dd653a83a7d975a6d38132fc8f1d8c7 (diff) | |
download | libssh-bc72ec582168ca4fd9e5f64f385f1de7695fca71.tar.gz libssh-bc72ec582168ca4fd9e5f64f385f1de7695fca71.tar.xz libssh-bc72ec582168ca4fd9e5f64f385f1de7695fca71.zip |
messages: Some cleanup for ssh_packet_service_request
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/messages.c | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/src/messages.c b/src/messages.c index 282698e5..b68e0f28 100644 --- a/src/messages.c +++ b/src/messages.c @@ -613,41 +613,38 @@ void ssh_message_free(ssh_message msg){ SSH_PACKET_CALLBACK(ssh_packet_service_request) { - ssh_string service = NULL; char *service_c = NULL; ssh_message msg = NULL; + int rc; (void)type; (void)user; - service = ssh_buffer_get_ssh_string(packet); - if (service == NULL) { + rc = ssh_buffer_unpack(packet, + "s", + &service_c); + if (rc != SSH_OK) { ssh_set_error(session, SSH_FATAL, "Invalid SSH_MSG_SERVICE_REQUEST packet"); goto error; } - service_c = ssh_string_to_char(service); - if (service_c == NULL) { - goto error; - } SSH_LOG(SSH_LOG_PACKET, "Received a SERVICE_REQUEST for service %s", service_c); + msg = ssh_message_new(session); if (msg == NULL) { SAFE_FREE(service_c); goto error; } - msg->type=SSH_REQUEST_SERVICE; - msg->service_request.service=service_c; + msg->type = SSH_REQUEST_SERVICE; + msg->service_request.service = service_c; + + ssh_message_queue(session, msg); error: - ssh_string_free(service); - if (msg != NULL) { - ssh_message_queue(session, msg); - } return SSH_PACKET_USED; } |