Commit 453fc7a0 authored by Richard Levitte's avatar Richard Levitte
Browse files

Make sure max in fmtstr() doesn't overflow into negativity

parent 6378809b
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -390,8 +390,16 @@ fmtstr(char **sbuffer,
    padlen = min - strln;
    if (min < 0 || padlen < 0)
        padlen = 0;
    if (max >= 0)
        max += padlen;      /* The maximum output including padding */
    if (max >= 0) {
        /*
         * Calculate the maximum output including padding.
         * Make sure max doesn't overflow into negativity
         */
        if (max < INT_MAX - padlen)
            max += padlen;
        else
            max = INT_MAX;
    }
    if (flags & DP_F_MINUS)
        padlen = -padlen;