sftp_close_handle: add precation to not access NULL pointer
clang-analyzer pointed this out as a "Pass-by-value argument in function call is undefined" but while I can't see exactly how this can ever happen in reality I think a little check for safety isn't such a bad thing here.
Этот коммит содержится в:
родитель
26d1698320
Коммит
88ac2dd43c
@ -1604,7 +1604,7 @@ sftp_close_handle(LIBSSH2_SFTP_HANDLE *handle)
|
|||||||
int retcode;
|
int retcode;
|
||||||
/* 13 = packet_len(4) + packet_type(1) + request_id(4) + handle_len(4) */
|
/* 13 = packet_len(4) + packet_type(1) + request_id(4) + handle_len(4) */
|
||||||
ssize_t packet_len = handle->handle_len + 13;
|
ssize_t packet_len = handle->handle_len + 13;
|
||||||
unsigned char *s, *data;
|
unsigned char *s, *data = NULL;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
if (handle->close_state == libssh2_NB_state_idle) {
|
if (handle->close_state == libssh2_NB_state_idle) {
|
||||||
@ -1657,6 +1657,12 @@ sftp_close_handle(LIBSSH2_SFTP_HANDLE *handle)
|
|||||||
handle->close_state = libssh2_NB_state_sent1;
|
handle->close_state = libssh2_NB_state_sent1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!data)
|
||||||
|
/* if it reaches this point with data unset, something unwanted
|
||||||
|
happened (like this function is called again when in
|
||||||
|
libssh2_NB_state_sent1 state) and we just bail out */
|
||||||
|
return LIBSSH2_ERROR_INVAL;
|
||||||
|
|
||||||
retcode = _libssh2_ntohu32(data + 5);
|
retcode = _libssh2_ntohu32(data + 5);
|
||||||
LIBSSH2_FREE(session, data);
|
LIBSSH2_FREE(session, data);
|
||||||
|
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user