Commit 1618679a authored by Kurt Roeckx's avatar Kurt Roeckx
Browse files

Cast to an unsigned type before negating



llvm's ubsan reported:
runtime error: negation of -9223372036854775808 cannot be represented in type
'long'; cast to an unsigned type to negate this value to itself

Found using afl

Reviewed-by: default avatarRich Salz <rsalz@openssl.org>
GH: #1325
parent 69588edb
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -76,7 +76,7 @@ static int long_i2c(ASN1_VALUE **pval, unsigned char *cont, int *putype,
     * set.
     */
    if (ltmp < 0)
        utmp = -ltmp - 1;
        utmp = -(unsigned long)ltmp - 1;
    else
        utmp = ltmp;
    clen = BN_num_bits_word(utmp);
+1 −1
Original line number Diff line number Diff line
@@ -451,7 +451,7 @@ fmtint(char **sbuffer,
    if (!(flags & DP_F_UNSIGNED)) {
        if (value < 0) {
            signvalue = '-';
            uvalue = -value;
            uvalue = -(unsigned LLONG)value;
        } else if (flags & DP_F_PLUS)
            signvalue = '+';
        else if (flags & DP_F_SPACE)