ssl: code cleanups

pull/4922/head
Victor Julien 6 years ago
parent 1578c84605
commit 9950ebffe6

@ -1345,10 +1345,39 @@ end:
return 0;
}
/** \internal
* \brief setup or grow the `trec` space in the connp
*/
static int EnsureRecordSpace(SSLStateConnp *curr_connp, const uint32_t input_len)
{
if (curr_connp->trec == NULL) {
curr_connp->trec_len = 2 * curr_connp->record_length + SSLV3_RECORD_HDR_LEN + 1;
curr_connp->trec = SCMalloc(curr_connp->trec_len);
if (unlikely(curr_connp->trec == NULL))
goto error;
}
if (curr_connp->trec_pos + input_len >= curr_connp->trec_len) {
curr_connp->trec_len = curr_connp->trec_pos + 2 * input_len + 1;
void *ptmp = SCRealloc(curr_connp->trec, curr_connp->trec_len);
if (unlikely(ptmp == NULL)) {
SCFree(curr_connp->trec);
curr_connp->trec = NULL;
goto error;
}
curr_connp->trec = ptmp;
}
return 0;
error:
curr_connp->trec_len = 0;
curr_connp->trec_pos = 0;
return -1;
}
static int SSLv3ParseHandshakeType(SSLState *ssl_state, const uint8_t *input,
uint32_t input_len, uint8_t direction)
{
void *ptmp;
const uint8_t *initial_input = input;
uint32_t parsed = 0;
int rc;
@ -1402,28 +1431,8 @@ static int SSLv3ParseHandshakeType(SSLState *ssl_state, const uint8_t *input,
"direction!");
break;
}
if (ssl_state->curr_connp->trec == NULL) {
ssl_state->curr_connp->trec_len =
2 * ssl_state->curr_connp->record_length +
SSLV3_RECORD_HDR_LEN + 1;
ssl_state->curr_connp->trec =
SCMalloc(ssl_state->curr_connp->trec_len);
}
if (ssl_state->curr_connp->trec_pos + input_len >=
ssl_state->curr_connp->trec_len) {
ssl_state->curr_connp->trec_len =
ssl_state->curr_connp->trec_pos + 2 * input_len + 1;
ptmp = SCRealloc(ssl_state->curr_connp->trec,
ssl_state->curr_connp->trec_len);
if (unlikely(ptmp == NULL)) {
SCFree(ssl_state->curr_connp->trec);
}
ssl_state->curr_connp->trec = ptmp;
}
if (unlikely(ssl_state->curr_connp->trec == NULL)) {
ssl_state->curr_connp->trec_len = 0;
if (EnsureRecordSpace(ssl_state->curr_connp, input_len) < 0) {
/* error, skip packet */
parsed += input_len;
(void)parsed; /* for scan-build */

Loading…
Cancel
Save