| Title | GNU binutils/ld 2.43 Memory Leak |
|---|
| Description | using `ld -w` to link input file may cause memory leak.
The stack traces are as follow:
```
/data/swj/optfuzz/benchmark/binutils-2.43/bins/bin/ld -w /tmp/bug
/data/swj/optfuzz/benchmark/binutils-2.43/bins/bin/ld: warning: /tmp/bug has a section extending past end of file
=================================================================
==3147400==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 2080 byte(s) in 2 object(s) allocated from:
#0 0x55cf25a88dce in __interceptor_malloc (/data/swj/optfuzz/benchmark/binutils-2.43/bins/bin/ld+0x1dcdce) (BuildId: d9731e405748db264b62c84ded760ba4f068cb0a)
#1 0x55cf25ffb69b in xmalloc /data/swj/optfuzz/benchmark/binutils-2.43/libiberty/./xmalloc.c:149:12
#2 0x55cf25b909fa in add_link_order_input_section /data/swj/optfuzz/benchmark/binutils-2.43/ld/ldelfgen.c:65:17
#3 0x55cf25b8f2cb in link_order_scan /data/swj/optfuzz/benchmark/binutils-2.43/ld/ldelfgen.c:130:10
#4 0x55cf25b8eea4 in link_order_scan /data/swj/optfuzz/benchmark/binutils-2.43/ld/ldelfgen.c:105:8
#5 0x55cf25b8ef8d in link_order_scan /data/swj/optfuzz/benchmark/binutils-2.43/ld/ldelfgen.c:114:11
#6 0x55cf25b8e002 in ldelf_map_segments /data/swj/optfuzz/benchmark/binutils-2.43/ld/ldelfgen.c:274:8
#7 0x55cf25b5d8d4 in gldelf_x86_64_after_allocation /data/swj/optfuzz/benchmark/binutils-2.43/ld/eelf_x86_64.c:151:5
#8 0x55cf25b43036 in ldemul_after_allocation /data/swj/optfuzz/benchmark/binutils-2.43/ld/ldemul.c:90:3
#9 0x55cf25b04dc0 in lang_process /data/swj/optfuzz/benchmark/binutils-2.43/ld/ldlang.c:8473:3
#10 0x55cf25b2e34c in main /data/swj/optfuzz/benchmark/binutils-2.43/ld/./ldmain.c:529:3
#11 0x7fda55f1b082 in __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:308:16
Direct leak of 1928 byte(s) in 171 object(s) allocated from:
#0 0x55cf25a88dce in __interceptor_malloc (/data/swj/optfuzz/benchmark/binutils-2.43/bins/bin/ld+0x1dcdce) (BuildId: d9731e405748db264b62c84ded760ba4f068cb0a)
#1 0x55cf25ffb69b in xmalloc /data/swj/optfuzz/benchmark/binutils-2.43/libiberty/./xmalloc.c:149:12
#2 0x55cf25ffb8dd in xstrdup /data/swj/optfuzz/benchmark/binutils-2.43/libiberty/./xstrdup.c:34:24
#3 0x55cf25ad4ff7 in yylex /data/swj/optfuzz/benchmark/binutils-2.43/ld/ldlex.l:401:21
#4 0x55cf25ac43fa in yyparse /data/swj/optfuzz/benchmark/binutils-2.43/ld/ldgram.c:2520:16
#5 0x55cf25b2dee3 in main /data/swj/optfuzz/benchmark/binutils-2.43/ld/./ldmain.c:434:7
#6 0x7fda55f1b082 in __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:308:16
Direct leak of 800 byte(s) in 1 object(s) allocated from:
#0 0x55cf25a88dce in __interceptor_malloc (/data/swj/optfuzz/benchmark/binutils-2.43/bins/bin/ld+0x1dcdce) (BuildId: d9731e405748db264b62c84ded760ba4f068cb0a)
#1 0x55cf25bc4ad2 in bfd_malloc /data/swj/optfuzz/benchmark/binutils-2.43/bfd/libbfd.c:291:9
#2 0x55cf25d39021 in bfd_elf_final_link /data/swj/optfuzz/benchmark/binutils-2.43/bfd/elflink.c:12905:44
#3 0x55cf25b33d0e in ldwrite /data/swj/optfuzz/benchmark/binutils-2.43/ld/ldwrite.c:550:8
#4 0x55cf25b2e4e9 in main /data/swj/optfuzz/benchmark/binutils-2.43/ld/./ldmain.c:556:3
#5 0x7fda55f1b082 in __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:308:16
Direct leak of 338 byte(s) in 12 object(s) allocated from:
#0 0x55cf25a88dce in __interceptor_malloc (/data/swj/optfuzz/benchmark/binutils-2.43/bins/bin/ld+0x1dcdce) (BuildId: d9731e405748db264b62c84ded760ba4f068cb0a)
#1 0x55cf25ffb69b in xmalloc /data/swj/optfuzz/benchmark/binutils-2.43/libiberty/./xmalloc.c:149:12
#2 0x55cf25ffb840 in xmemdup /data/swj/optfuzz/benchmark/binutils-2.43/libiberty/./xmemdup.c:37:18
#3 0x55cf25ad5462 in yylex /data/swj/optfuzz/benchmark/binutils-2.43/ld/ldlex.l:442:17
#4 0x55cf25ac43fa in yyparse /data/swj/optfuzz/benchmark/binutils-2.43/ld/ldgram.c:2520:16
#5 0x55cf25b2dee3 in main /data/swj/optfuzz/benchmark/binutils-2.43/ld/./ldmain.c:434:7
#6 0x7fda55f1b082 in __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:308:16
Direct leak of 258 byte(s) in 129 object(s) allocated from:
#0 0x55cf25a88dce in __interceptor_malloc (/data/swj/optfuzz/benchmark/binutils-2.43/bins/bin/ld+0x1dcdce) (BuildId: d9731e405748db264b62c84ded760ba4f068cb0a)
#1 0x55cf25ffb69b in xmalloc /data/swj/optfuzz/benchmark/binutils-2.43/libiberty/./xmalloc.c:149:12
#2 0x55cf25ffb8dd in xstrdup /data/swj/optfuzz/benchmark/binutils-2.43/libiberty/./xstrdup.c:34:24
#3 0x55cf25ad53e6 in yylex /data/swj/optfuzz/benchmark/binutils-2.43/ld/ldlex.l:435:21
#4 0x55cf25ac43fa in yyparse /data/swj/optfuzz/benchmark/binutils-2.43/ld/ldgram.c:2520:16
#5 0x55cf25b2dee3 in main /data/swj/optfuzz/benchmark/binutils-2.43/ld/./ldmain.c:434:7
#6 0x7fda55f1b082 in __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:308:16
SUMMARY: AddressSanitizer: 5404 byte(s) leaked in 315 allocation(s).
```
|
|---|
| Source | ⚠️ https://sourceware.org/bugzilla/show_bug.cgi?id=32576 |
|---|
| User | wenjusun (UID 80422) |
|---|
| Submission | 01/20/2025 07:32 AM (1 Year ago) |
|---|
| Moderation | 02/10/2025 08:31 AM (21 days later) |
|---|
| Status | Accepted |
|---|
| VulDB entry | 295052 [GNU Binutils 2.43 ld ld/ldelfgen.c link_order_scan memory leak] |
|---|
| Points | 20 |
|---|