Commit 0522382
committed
Fix RSA_METHOD parameter mismatch and use-after-free in EVP_PKEY_derive_set_peer
Custom RSA_METHOD callbacks (sign_raw, verify_raw, encrypt, decrypt)
were receiving max_out (output buffer size) as their first parameter
instead of in_len (input data length). This caused callbacks to read
past the input buffer by up to (RSA_size - actual_input_length) bytes.
Fixed all 4 dispatch sites to pass in_len, matching OpenSSL's flen
semantics for RSA_private_encrypt/RSA_public_decrypt/etc.
EVP_PKEY_derive_set_peer had a use-after-free when called with the same
peer key already set and a refcount of 1: EVP_PKEY_free freed the key
before EVP_PKEY_up_ref took a new reference. Reordered to up_ref before
free, and added proper cleanup in the ctrl failure path.1 parent c5e1710 commit 0522382
4 files changed
Lines changed: 12 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
366 | 366 | | |
367 | 367 | | |
368 | 368 | | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
369 | 372 | | |
370 | 373 | | |
371 | 374 | | |
372 | 375 | | |
373 | 376 | | |
374 | 377 | | |
| 378 | + | |
375 | 379 | | |
376 | 380 | | |
377 | 381 | | |
378 | 382 | | |
379 | | - | |
380 | 383 | | |
381 | 384 | | |
382 | 385 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
549 | 549 | | |
550 | 550 | | |
551 | 551 | | |
552 | | - | |
| 552 | + | |
553 | 553 | | |
554 | 554 | | |
555 | 555 | | |
556 | 556 | | |
557 | | - | |
| 557 | + | |
558 | 558 | | |
559 | 559 | | |
560 | 560 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
360 | 360 | | |
361 | 361 | | |
362 | 362 | | |
363 | | - | |
| 363 | + | |
364 | 364 | | |
365 | 365 | | |
366 | 366 | | |
| |||
372 | 372 | | |
373 | 373 | | |
374 | 374 | | |
375 | | - | |
| 375 | + | |
376 | 376 | | |
377 | 377 | | |
378 | 378 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
338 | 338 | | |
339 | 339 | | |
340 | 340 | | |
341 | | - | |
| 341 | + | |
342 | 342 | | |
343 | 343 | | |
344 | 344 | | |
345 | 345 | | |
346 | | - | |
| 346 | + | |
347 | 347 | | |
348 | 348 | | |
349 | 349 | | |
| |||
515 | 515 | | |
516 | 516 | | |
517 | 517 | | |
518 | | - | |
| 518 | + | |
519 | 519 | | |
520 | 520 | | |
521 | 521 | | |
522 | 522 | | |
523 | | - | |
| 523 | + | |
524 | 524 | | |
525 | 525 | | |
526 | 526 | | |
| |||
0 commit comments