Memory allocation checks.
authorJenny Yung <jenny.yung@oracle.com>
Thu, 26 Jun 2014 22:30:57 +0000 (23:30 +0100)
committerDr. Stephen Henson <steve@openssl.org>
Thu, 26 Jun 2014 22:33:05 +0000 (23:33 +0100)
PR#3399.
(cherry picked from commit da0d5e78bcd35a9fd394fb7b7b058722125e76cb)

crypto/ocsp/ocsp_ht.c

index b4126ade516929af1232dbf100ea92e89f8beb2a..09eb855d4a08a7ede81cce9dbcbfd16a9353c8e8 100644 (file)
@@ -158,6 +158,8 @@ OCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, char *path, OCSP_REQUEST *req,
 
        OCSP_REQ_CTX *rctx;
        rctx = OPENSSL_malloc(sizeof(OCSP_REQ_CTX));
+       if (!rctx)
+               return NULL;
        rctx->state = OHS_ERROR;
        rctx->mem = BIO_new(BIO_s_mem());
        rctx->io = io;
@@ -167,18 +169,21 @@ OCSP_REQ_CTX *OCSP_sendreq_new(BIO *io, char *path, OCSP_REQUEST *req,
        else
                rctx->iobuflen = OCSP_MAX_LINE_LEN;
        rctx->iobuf = OPENSSL_malloc(rctx->iobuflen);
-       if (!rctx->iobuf)
-               return 0;
+       if (!rctx->mem || !rctx->iobuf)
+               goto err;
        if (!path)
                path = "/";
 
         if (BIO_printf(rctx->mem, post_hdr, path) <= 0)
-               return 0;
+               goto err;
 
        if (req && !OCSP_REQ_CTX_set1_req(rctx, req))
-               return 0;
+               goto err;
 
        return rctx;
+       err:
+       OCSP_REQ_CTX_free(rctx);
+       return NULL;
        }
 
 /* Parse the HTTP response. This will look like this: