diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/libcrypto/bio/b_dump.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/lib/libcrypto/bio/b_dump.c b/src/lib/libcrypto/bio/b_dump.c index 09b011268e..39cd94e767 100644 --- a/src/lib/libcrypto/bio/b_dump.c +++ b/src/lib/libcrypto/bio/b_dump.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: b_dump.c,v 1.28 2024/02/02 10:53:48 tb Exp $ */ | 1 | /* $OpenBSD: b_dump.c,v 1.29 2024/02/15 10:34:30 tb Exp $ */ |
| 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
| 3 | * All rights reserved. | 3 | * All rights reserved. |
| 4 | * | 4 | * |
| @@ -56,6 +56,7 @@ | |||
| 56 | * [including the GNU Public Licence.] | 56 | * [including the GNU Public Licence.] |
| 57 | */ | 57 | */ |
| 58 | 58 | ||
| 59 | #include <limits.h> | ||
| 59 | #include <stdint.h> | 60 | #include <stdint.h> |
| 60 | #include <stdio.h> | 61 | #include <stdio.h> |
| 61 | #include <string.h> | 62 | #include <string.h> |
| @@ -134,6 +135,8 @@ BIO_dump_indent(BIO *bio, const char *s, int len, int indent) | |||
| 134 | if ((written = BIO_printf(bio, "%*s%04x - ", indent, "", | 135 | if ((written = BIO_printf(bio, "%*s%04x - ", indent, "", |
| 135 | dumped)) < 0) | 136 | dumped)) < 0) |
| 136 | goto err; | 137 | goto err; |
| 138 | if (printed > INT_MAX - written) | ||
| 139 | goto err; | ||
| 137 | printed += written; | 140 | printed += written; |
| 138 | 141 | ||
| 139 | /* | 142 | /* |
| @@ -154,6 +157,8 @@ BIO_dump_indent(BIO *bio, const char *s, int len, int indent) | |||
| 154 | sep = '-'; | 157 | sep = '-'; |
| 155 | if ((written = BIO_printf(bio, "%02x%c", u8, sep)) < 0) | 158 | if ((written = BIO_printf(bio, "%02x%c", u8, sep)) < 0) |
| 156 | goto err; | 159 | goto err; |
| 160 | if (printed > INT_MAX - written) | ||
| 161 | goto err; | ||
| 157 | printed += written; | 162 | printed += written; |
| 158 | 163 | ||
| 159 | /* Locale-independent version of !isprint(u8). */ | 164 | /* Locale-independent version of !isprint(u8). */ |
| @@ -173,6 +178,8 @@ BIO_dump_indent(BIO *bio, const char *s, int len, int indent) | |||
| 173 | if ((written = BIO_printf(bio, "%*s%.*s\n", 3 * missing + 2, "", | 178 | if ((written = BIO_printf(bio, "%*s%.*s\n", 3 * missing + 2, "", |
| 174 | row_bytes, ascii_dump)) < 0) | 179 | row_bytes, ascii_dump)) < 0) |
| 175 | goto err; | 180 | goto err; |
| 181 | if (printed > INT_MAX - written) | ||
| 182 | goto err; | ||
| 176 | printed += written; | 183 | printed += written; |
| 177 | 184 | ||
| 178 | dumped += row_bytes; | 185 | dumped += row_bytes; |
| @@ -182,6 +189,8 @@ BIO_dump_indent(BIO *bio, const char *s, int len, int indent) | |||
| 182 | if ((written = BIO_printf(bio, "%*s%04x - <SPACES/NULS>\n", | 189 | if ((written = BIO_printf(bio, "%*s%04x - <SPACES/NULS>\n", |
| 183 | indent, "", dumped + trailing)) < 0) | 190 | indent, "", dumped + trailing)) < 0) |
| 184 | goto err; | 191 | goto err; |
| 192 | if (printed > INT_MAX - written) | ||
| 193 | goto err; | ||
| 185 | printed += written; | 194 | printed += written; |
| 186 | } | 195 | } |
| 187 | 196 | ||
