We can't always read 6 bytes in an OCSP response: fix so error statuses
are read correctly for non-blocking I/O.
This commit is contained in:
parent
c14c6e996d
commit
0ef9b9c7bf
@ -397,11 +397,12 @@ int OCSP_sendreq_nbio(OCSP_RESPONSE **presp, OCSP_REQ_CTX *rctx)
|
|||||||
|
|
||||||
|
|
||||||
case OHS_ASN1_HEADER:
|
case OHS_ASN1_HEADER:
|
||||||
/* Now reading ASN1 header: can read at least 6 bytes which
|
/* Now reading ASN1 header: can read at least 2 bytes which
|
||||||
* is more than enough for any valid ASN1 SEQUENCE header
|
* is enough for ASN1 SEQUENCE header and either length field
|
||||||
|
* or at least the length of the length field.
|
||||||
*/
|
*/
|
||||||
n = BIO_get_mem_data(rctx->mem, &p);
|
n = BIO_get_mem_data(rctx->mem, &p);
|
||||||
if (n < 6)
|
if (n < 2)
|
||||||
goto next_io;
|
goto next_io;
|
||||||
|
|
||||||
/* Check it is an ASN1 SEQUENCE */
|
/* Check it is an ASN1 SEQUENCE */
|
||||||
@ -414,6 +415,11 @@ int OCSP_sendreq_nbio(OCSP_RESPONSE **presp, OCSP_REQ_CTX *rctx)
|
|||||||
/* Check out length field */
|
/* Check out length field */
|
||||||
if (*p & 0x80)
|
if (*p & 0x80)
|
||||||
{
|
{
|
||||||
|
/* If MSB set on initial length octet we can now
|
||||||
|
* always read 6 octets: make sure we have them.
|
||||||
|
*/
|
||||||
|
if (n < 6)
|
||||||
|
goto next_io;
|
||||||
n = *p & 0x7F;
|
n = *p & 0x7F;
|
||||||
/* Not NDEF or excessive length */
|
/* Not NDEF or excessive length */
|
||||||
if (!n || (n > 4))
|
if (!n || (n > 4))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user