diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2018-09-25 16:00:26 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2018-10-19 22:01:28 +0200 |
commit | a77f6b15587c917352528ccab4f76ed12b472431 (patch) | |
tree | 5fdf551638fcf2a9bb3bf64e87f62db9ae8255e8 | |
parent | 53052f3a823131dec82cb7259cb94cb7fd77323b (diff) | |
download | libssh-a77f6b15587c917352528ccab4f76ed12b472431.tar.gz libssh-a77f6b15587c917352528ccab4f76ed12b472431.tar.xz libssh-a77f6b15587c917352528ccab4f76ed12b472431.zip |
messages: Some cleanup for ssh_packet_service_request
Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
-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; } |