diff options
Diffstat (limited to 'crypto/bio/b_print.c')
-rw-r--r-- | crypto/bio/b_print.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/crypto/bio/b_print.c b/crypto/bio/b_print.c index 545c469810..1b70bac71b 100644 --- a/crypto/bio/b_print.c +++ b/crypto/bio/b_print.c @@ -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; |