Commit 87a8405b authored by David Benjamin's avatar David Benjamin Committed by Richard Levitte
Browse files

Avoid overflow issues in X509_cmp.



The length is a long, so returning the difference does not quite work.

Thanks to Torbjörn Granlund for noticing.

Reviewed-by: default avatarRich Salz <rsalz@openssl.org>
Reviewed-by: default avatarRichard Levitte <levitte@openssl.org>
parent a1f41284
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -187,9 +187,10 @@ int X509_cmp(const X509 *a, const X509 *b)
        return rv;
    /* Check for match against stored encoding too */
    if (!a->cert_info.enc.modified && !b->cert_info.enc.modified) {
        rv = (int)(a->cert_info.enc.len - b->cert_info.enc.len);
        if (rv)
            return rv;
        if (a->cert_info.enc.len < b->cert_info.enc.len)
            return -1;
        if (a->cert_info.enc.len > b->cert_info.enc.len)
            return 1;
        return memcmp(a->cert_info.enc.enc, b->cert_info.enc.enc,
                      a->cert_info.enc.len);
    }