]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Fix asan finding in bio_addr
authorJuergen Christ <jchrist@linux.ibm.com>
Wed, 10 Aug 2022 15:59:19 +0000 (17:59 +0200)
committerMatt Caswell <matt@openssl.org>
Fri, 12 Aug 2022 15:13:13 +0000 (16:13 +0100)
Running test_tfo_cli under asan yields
==166214==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x60700000d57c at pc 0x03ffa004ed86 bp 0x03ffe2977e80 sp 0x03ffe2977668
READ of size 112 at 0x60700000d57c thread T0
    #0 0x3ffa004ed85 in memcpy (/lib64/libasan.so.8+0x4ed85)
    #1 0x3ff9f3615b7 in BIO_ADDR_dup crypto/bio/bio_addr.c:77
[...]
and fails the test.

Fix this by copying the right structure of the union.

Signed-off-by: Juergen Christ <jchrist@linux.ibm.com>
Reviewed-by: Todd Short <todd.short@me.com>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/18979)

crypto/bio/bio_addr.c

index b9027e684b59c7870be0f4db1b5975d70668227e..747777a5abf01f6fe0697c49b64bfd03a9031bd6 100644 (file)
@@ -74,7 +74,7 @@ BIO_ADDR *BIO_ADDR_dup(const BIO_ADDR *ap)
     if (ap != NULL) {
         ret = BIO_ADDR_new();
         if (ret != NULL)
-            memcpy(ret, ap, sizeof(BIO_ADDR));
+            BIO_ADDR_make(ret, &ap->sa);
     }
     return ret;
 }