Skip to content

Commit 67abcc6

Browse files
Merge pull request #9949 from philljj/fix_d2i_SSL_SESSION
ssl_sess: check fields in wolfSSL_d2i_SSL_SESSION.
2 parents c1f71fc + 0a99a08 commit 67abcc6

1 file changed

Lines changed: 12 additions & 0 deletions

File tree

src/ssl_sess.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2795,6 +2795,10 @@ WOLFSSL_SESSION* wolfSSL_d2i_SSL_SESSION(WOLFSSL_SESSION** sess,
27952795
ato32(data + idx, &s->bornOn); idx += OPAQUE32_LEN;
27962796
ato32(data + idx, &s->timeout); idx += OPAQUE32_LEN;
27972797
s->sessionIDSz = data[idx++];
2798+
if (s->sessionIDSz > ID_LEN) {
2799+
ret = BUFFER_ERROR;
2800+
goto end;
2801+
}
27982802

27992803
/* sessionID | secret | haveEMS | haveAltSessionID */
28002804
if (i - idx < s->sessionIDSz + SECRET_LEN + OPAQUE8_LEN + OPAQUE8_LEN) {
@@ -2877,6 +2881,10 @@ WOLFSSL_SESSION* wolfSSL_d2i_SSL_SESSION(WOLFSSL_SESSION** sess,
28772881
goto end;
28782882
}
28792883
ato16(data + idx, &s->idLen); idx += OPAQUE16_LEN;
2884+
if (s->idLen > SERVER_ID_LEN) {
2885+
ret = BUFFER_ERROR;
2886+
goto end;
2887+
}
28802888

28812889
/* ServerID */
28822890
if (i - idx < s->idLen) {
@@ -2892,6 +2900,10 @@ WOLFSSL_SESSION* wolfSSL_d2i_SSL_SESSION(WOLFSSL_SESSION** sess,
28922900
goto end;
28932901
}
28942902
s->sessionCtxSz = data[idx++];
2903+
if (s->sessionCtxSz > ID_LEN) {
2904+
ret = BUFFER_ERROR;
2905+
goto end;
2906+
}
28952907

28962908
/* app session context ID */
28972909
if (i - idx < s->sessionCtxSz) {

0 commit comments

Comments
 (0)