Commit a04d08fc authored by Matt Caswell's avatar Matt Caswell
Browse files

Ensure we check i2d_X509 return val



The i2d_X509() function can return a negative value on error. Therefore
we should make sure we check it.

Issue reported by Yuan Jochen Kang.

Reviewed-by: default avatarEmilia Käsper <emilia@openssl.org>
(cherry picked from commit 446ba8de)
parent 1ee45415
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -201,9 +201,18 @@ X509 *d2i_X509_AUX(X509 **a, const unsigned char **pp, long length)

int i2d_X509_AUX(X509 *a, unsigned char **pp)
{
    int length;
    int length, tmplen;
    unsigned char *start = *pp;
    length = i2d_X509(a, pp);
    if (a)
        length += i2d_X509_CERT_AUX(a->aux, pp);
    if (length < 0 || a == NULL)
        return length;

    tmplen = i2d_X509_CERT_AUX(a->aux, pp);
    if (tmplen < 0) {
        *pp = start;
        return tmplen;
    }
    length += tmplen;

    return length;
}