diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/regress/lib/libcrypto/bio/bio_chain.c | 42 |
1 files changed, 15 insertions, 27 deletions
diff --git a/src/regress/lib/libcrypto/bio/bio_chain.c b/src/regress/lib/libcrypto/bio/bio_chain.c index f5c46d710b..810395676f 100644 --- a/src/regress/lib/libcrypto/bio/bio_chain.c +++ b/src/regress/lib/libcrypto/bio/bio_chain.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: bio_chain.c,v 1.11 2022/12/09 17:23:05 tb Exp $ */ | 1 | /* $OpenBSD: bio_chain.c,v 1.12 2022/12/10 10:42:13 tb Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright (c) 2022 Theo Buehler <tb@openbsd.org> | 3 | * Copyright (c) 2022 Theo Buehler <tb@openbsd.org> |
| 4 | * | 4 | * |
| @@ -200,24 +200,15 @@ walk_forward(BIO *start, BIO *end, size_t expected_len, size_t i, size_t j, | |||
| 200 | size_t len; | 200 | size_t len; |
| 201 | int ret = 0; | 201 | int ret = 0; |
| 202 | 202 | ||
| 203 | if (start == NULL || end == NULL) { | 203 | prev = NULL; |
| 204 | if (expected_len != 0) { | ||
| 205 | fprintf(stderr, "%s case (%zu, %zu) %s: empty chain " | ||
| 206 | "with expected length %zu > 0\n", | ||
| 207 | fn, i, j, description, expected_len); | ||
| 208 | goto err; | ||
| 209 | } | ||
| 210 | goto done; | ||
| 211 | } | ||
| 212 | |||
| 213 | next = start; | 204 | next = start; |
| 214 | len = 0; | 205 | len = 0; |
| 215 | 206 | ||
| 216 | do { | 207 | while (next != NULL) { |
| 217 | prev = next; | 208 | prev = next; |
| 218 | next = BIO_next(prev); | 209 | next = BIO_next(prev); |
| 219 | len++; | 210 | len++; |
| 220 | } while (next != NULL); | 211 | } |
| 221 | 212 | ||
| 222 | if (prev != end) { | 213 | if (prev != end) { |
| 223 | fprintf(stderr, "%s case (%zu, %zu) %s has unexpected end\n", | 214 | fprintf(stderr, "%s case (%zu, %zu) %s has unexpected end\n", |
| @@ -232,7 +223,6 @@ walk_forward(BIO *start, BIO *end, size_t expected_len, size_t i, size_t j, | |||
| 232 | goto err; | 223 | goto err; |
| 233 | } | 224 | } |
| 234 | 225 | ||
| 235 | done: | ||
| 236 | ret = 1; | 226 | ret = 1; |
| 237 | 227 | ||
| 238 | err: | 228 | err: |
| @@ -247,24 +237,15 @@ walk_backward(BIO *start, BIO *end, size_t expected_len, size_t i, size_t j, | |||
| 247 | size_t len; | 237 | size_t len; |
| 248 | int ret = 0; | 238 | int ret = 0; |
| 249 | 239 | ||
| 250 | if (start == NULL || end == NULL) { | 240 | next = NULL; |
| 251 | if (expected_len != 0) { | ||
| 252 | fprintf(stderr, "%s case (%zu, %zu) %s: empty chain " | ||
| 253 | "with expected length %zu > 0\n", | ||
| 254 | fn, i, j, description, expected_len); | ||
| 255 | goto err; | ||
| 256 | } | ||
| 257 | goto done; | ||
| 258 | } | ||
| 259 | |||
| 260 | prev = end; | 241 | prev = end; |
| 261 | len = 0; | 242 | len = 0; |
| 262 | 243 | ||
| 263 | do { | 244 | while (prev != NULL) { |
| 264 | next = prev; | 245 | next = prev; |
| 265 | prev = BIO_prev(prev); | 246 | prev = BIO_prev(prev); |
| 266 | len++; | 247 | len++; |
| 267 | } while (prev != NULL); | 248 | } |
| 268 | 249 | ||
| 269 | if (next != start) { | 250 | if (next != start) { |
| 270 | fprintf(stderr, "%s case (%zu, %zu) %s has unexpected start\n", | 251 | fprintf(stderr, "%s case (%zu, %zu) %s has unexpected start\n", |
| @@ -279,7 +260,6 @@ walk_backward(BIO *start, BIO *end, size_t expected_len, size_t i, size_t j, | |||
| 279 | goto err; | 260 | goto err; |
| 280 | } | 261 | } |
| 281 | 262 | ||
| 282 | done: | ||
| 283 | ret = 1; | 263 | ret = 1; |
| 284 | 264 | ||
| 285 | err: | 265 | err: |
| @@ -369,6 +349,7 @@ link_chains_at(size_t i, size_t j, int use_bio_push) | |||
| 369 | 349 | ||
| 370 | new_start = A[0]; | 350 | new_start = A[0]; |
| 371 | new_end = B[nitems(B) - 1]; | 351 | new_end = B[nitems(B) - 1]; |
| 352 | /* new_len depends on use_bio_push. It is set a few lines down. */ | ||
| 372 | 353 | ||
| 373 | oldhead_start = B[0]; | 354 | oldhead_start = B[0]; |
| 374 | oldhead_end = BIO_prev(B[j]); | 355 | oldhead_end = BIO_prev(B[j]); |
| @@ -394,6 +375,13 @@ link_chains_at(size_t i, size_t j, int use_bio_push) | |||
| 394 | oldtail_start = BIO_next(A[i]); | 375 | oldtail_start = BIO_next(A[i]); |
| 395 | oldtail_end = A[nitems(A) - 1]; | 376 | oldtail_end = A[nitems(A) - 1]; |
| 396 | oldtail_len = nitems(A) - i - 1; | 377 | oldtail_len = nitems(A) - i - 1; |
| 378 | |||
| 379 | /* If we set next on end of A[], the oldtail chain is empty. */ | ||
| 380 | if (i == nitems(A) - 1) { | ||
| 381 | oldtail_start = NULL; | ||
| 382 | oldtail_end = NULL; | ||
| 383 | oldtail_len = 0; | ||
| 384 | } | ||
| 397 | } | 385 | } |
| 398 | 386 | ||
| 399 | /* The two chains A[] and B[] are split into three disjoint pieces. */ | 387 | /* The two chains A[] and B[] are split into three disjoint pieces. */ |
