Update of bug #68585 (group groff):

                  Status:             In Progress => Fixed
             Open/Closed:                    Open => Closed

    _______________________________________________________

Follow-up Comment #6:


commit 8ef98cfb067b249e7a34568062027e0ccdba7b1f
Author: Bruno Haible <[email protected]>
Date:   Sun Aug 2 13:54:32 2026 +0200

    tbl: Fix undefined behaviour.
    
    This change fixes ASAN findings such as:
    
    ERROR: AddressSanitizer: alloc-dealloc-mismatch (malloc vs operator delete
[]) on 0x6f5aaafeb4e0
        #0 0x5a98c9ab586d in operator delete[](void*)
/home/runner/work/llvm-project/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:179:46
        #1 0x5a98c9ad6eaf in block_entry::~block_entry()
/devel/groff/src/preproc/tbl/table.cpp:667:3
        #2 0x5a98c9b0cad4 in left_block_entry::~left_block_entry()
/devel/groff/src/preproc/tbl/table.cpp:334:7
        #3 0x5a98c9b0cb24 in left_block_entry::~left_block_entry()
/devel/groff/src/preproc/tbl/table.cpp:334:7
        #4 0x5a98c9ae6f36 in table::~table()
/devel/groff/src/preproc/tbl/table.cpp:1310:5
        #5 0x5a98c9ab89fc in process_table(table_input&)
/devel/groff/src/preproc/tbl/main.cpp:1677:5
        #6 0x5a98c9ab7da7 in process_input_file(_IO_FILE*)
/devel/groff/src/preproc/tbl/main.cpp:270:4
        #7 0x5a98c9acdc9e in main
/devel/groff/src/preproc/tbl/main.cpp:1792:5
    
    0x6f5aaafeb4e0 is located 0 bytes inside of 62-byte region
[0x6f5aaafeb4e0,0x6f5aaafeb51e)
    allocated by thread T0 here:
        #0 0x5a98c9a71f39 in calloc
/home/runner/work/llvm-project/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:74:3
        #1 0x5a98c9b15f2a in string::extract() const
/devel/groff/src/libs/libgroff/string.cpp:384:33
        #2 0x5a98c9aed448 in table::add_entry(int, int, string const&,
entry_format const*, char const*, int)
/devel/groff/src/preproc/tbl/table.cpp:1546:17
        #3 0x5a98c9acabf6 in process_data(table_input&, format*, options*)
/devel/groff/src/preproc/tbl/main.cpp:1577:13
        #4 0x5a98c9ab8972 in process_table(table_input&)
/devel/groff/src/preproc/tbl/main.cpp:1675:17
        #5 0x5a98c9ab7da7 in process_input_file(_IO_FILE*)
/devel/groff/src/preproc/tbl/main.cpp:270:4
        #6 0x5a98c9acdc9e in main
/devel/groff/src/preproc/tbl/main.cpp:1792:5
    
    SUMMARY: AddressSanitizer: alloc-dealloc-mismatch
/devel/groff/src/preproc/tbl/table.cpp:667:3 in block_entry::~block_entry()
    
    * src/preproc/tbl/table.cpp (block_entry::~block_entry): Free the
contents
    field using free(), not delete[].

commit 0f74adb4190f25238b7c1f49462added35471363
Author: Bruno Haible <[email protected]>
Date:   Sun Aug 2 13:54:38 2026 +0200

    eqn: Fix undefined behaviour, part 1.
    
    This change fixes this ASAN finding:
    
    ERROR: AddressSanitizer: alloc-dealloc-mismatch (malloc vs operator delete
[]) on 0x6d5acafe9730
        #0 0x582e73588e9d in operator delete[](void*)
/home/runner/work/llvm-project/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:179:46
        #1 0x582e735d26af in delim_box::~delim_box()
/devel/groff/src/preproc/eqn/delim.cpp:205:3
        #2 0x582e735d27f4 in delim_box::~delim_box()
/devel/groff/src/preproc/eqn/delim.cpp:204:1
        #3 0x582e735a2949 in box_list::~box_list()
/devel/groff/src/preproc/eqn/box.cpp:524:5
        #4 0x582e735b15f0 in list_box::~list_box()
/devel/groff/src/preproc/eqn/box.h:69:7
        #5 0x582e735b1644 in list_box::~list_box()
/devel/groff/src/preproc/eqn/box.h:69:7
        #6 0x582e735a1768 in box::top_level()
/devel/groff/src/preproc/eqn/box.cpp:415:3
        #7 0x582e735e4502 in yyparse()
/devel/groff/src/preproc/eqn/eqn.ypp:132:33
        #8 0x582e7358d33d in do_file(_IO_FILE*, char const*)
/devel/groff/src/preproc/eqn/main.cpp:155:7
        #9 0x582e7358b338 in main /devel/groff/src/preproc/eqn/main.cpp:483:5
    
    0x6d5acafe9730 is located 0 bytes inside of 2-byte region
[0x6d5acafe9730,0x6d5acafe9732)
    allocated by thread T0 here:
        #0 0x582e73545394 in malloc
/home/runner/work/llvm-project/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:67:3
        #1 0x582e735fd4b7 in strsave(char const*)
/devel/groff/src/libs/libgroff/strsave.cpp:36:33
        #2 0x582e735eb13c in yyparse()
/devel/groff/src/preproc/eqn/eqn.ypp:332:33
        #3 0x582e7358d33d in do_file(_IO_FILE*, char const*)
/devel/groff/src/preproc/eqn/main.cpp:155:7
        #4 0x582e7358b338 in main /devel/groff/src/preproc/eqn/main.cpp:483:5
    
    SUMMARY: AddressSanitizer: alloc-dealloc-mismatch
/devel/groff/src/preproc/eqn/delim.cpp:205:3 in delim_box::~delim_box()
    
    * src/preproc/eqn/delim.cpp (delim_box::~delim_box): Free the left and
right
    fields using free(), not delete[].
    * src/preproc/eqn/special.cpp (special_box::~special_box): Free the
macro_name
    field using free(), not delete[].

commit 17883bb19d37a873d0a8f036dabfffaf489ff592
Author: Bruno Haible <[email protected]>
Date:   Sun Aug 2 13:54:42 2026 +0200

    eqn: Fix undefined behaviour, part 2.
    
    This change fixes these two ASAN findings:
    
    ERROR: AddressSanitizer: alloc-dealloc-mismatch (malloc vs operator delete
[]) on 0x751c9b5e1010
        #0 0x5943b9f60e9d in operator delete[](void*)
/home/runner/work/llvm-project/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:179:46
        #1 0x5943b9f6fb6c in argument_macro_input::~argument_macro_input()
/devel/groff/src/preproc/eqn/lex.cpp:558:5
        #2 0x5943b9f6fc14 in argument_macro_input::~argument_macro_input()
/devel/groff/src/preproc/eqn/lex.cpp:556:1
        #3 0x5943b9f713b9 in get_char()
/devel/groff/src/preproc/eqn/lex.cpp:619:7
        #4 0x5943b9f71c33 in get_token(int)
/devel/groff/src/preproc/eqn/lex.cpp:817:11
        #5 0x5943b9f71979 in yylex()
/devel/groff/src/preproc/eqn/lex.cpp:1198:14
        #6 0x5943b9fbbb20 in yyparse()
/devel/groff/src/preproc/eqn/eqn.cpp:1390:16
        #7 0x5943b9f6533d in do_file(_IO_FILE*, char const*)
/devel/groff/src/preproc/eqn/main.cpp:155:7
        #8 0x5943b9f63338 in main /devel/groff/src/preproc/eqn/main.cpp:483:5
    
    0x751c9b5e1010 is located 0 bytes inside of 35-byte region
[0x751c9b5e1010,0x751c9b5e1033)
    allocated by thread T0 here:
        #0 0x5943b9f1d394 in malloc
/home/runner/work/llvm-project/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:67:3
        #1 0x5943b9fd5497 in strsave(char const*)
/devel/groff/src/libs/libgroff/strsave.cpp:36:33
        #2 0x5943b9f758c3 in interpolate_macro_with_args(char const*)
/devel/groff/src/preproc/eqn/lex.cpp:790:17
        #3 0x5943b9f721e6 in get_token(int)
/devel/groff/src/preproc/eqn/lex.cpp:876:8
        #4 0x5943b9f71979 in yylex()
/devel/groff/src/preproc/eqn/lex.cpp:1198:14
        #5 0x5943b9fbbb20 in yyparse()
/devel/groff/src/preproc/eqn/eqn.cpp:1390:16
        #6 0x5943b9f6533d in do_file(_IO_FILE*, char const*)
/devel/groff/src/preproc/eqn/main.cpp:155:7
        #7 0x5943b9f63338 in main /devel/groff/src/preproc/eqn/main.cpp:483:5
    
    SUMMARY: AddressSanitizer: alloc-dealloc-mismatch
/devel/groff/src/preproc/eqn/lex.cpp:558:5 in
argument_macro_input::~argument_macro_input()
    
    ERROR: AddressSanitizer: alloc-dealloc-mismatch (malloc vs operator delete
[]) on 0x7425fc5e3df0
        #0 0x5f7f9297fe9d in operator delete[](void*)
/home/runner/work/llvm-project/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:179:46
        #1 0x5f7f9298ebab in argument_macro_input::~argument_macro_input()
/devel/groff/src/preproc/eqn/lex.cpp:559:3
        #2 0x5f7f9298ec04 in argument_macro_input::~argument_macro_input()
/devel/groff/src/preproc/eqn/lex.cpp:556:1
        #3 0x5f7f929903a9 in get_char()
/devel/groff/src/preproc/eqn/lex.cpp:619:7
        #4 0x5f7f92990c23 in get_token(int)
/devel/groff/src/preproc/eqn/lex.cpp:817:11
        #5 0x5f7f92990969 in yylex()
/devel/groff/src/preproc/eqn/lex.cpp:1198:14
        #6 0x5f7f929dab10 in yyparse()
/devel/groff/src/preproc/eqn/eqn.cpp:1390:16
        #7 0x5f7f9298433d in do_file(_IO_FILE*, char const*)
/devel/groff/src/preproc/eqn/main.cpp:155:7
        #8 0x5f7f92982338 in main /devel/groff/src/preproc/eqn/main.cpp:483:5
    
    0x7425fc5e3df0 is located 0 bytes inside of 21-byte region
[0x7425fc5e3df0,0x7425fc5e3e05)
    allocated by thread T0 here:
        #0 0x5f7f9293c394 in malloc
/home/runner/work/llvm-project/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:67:3
        #1 0x5f7f929f4487 in strsave(char const*)
/devel/groff/src/libs/libgroff/strsave.cpp:36:33
        #2 0x5f7f9298ded4 in argument_macro_input::argument_macro_input(char
const*, unsigned long, char**, input*)
/devel/groff/src/preproc/eqn/lex.cpp:542:11
        #3 0x5f7f92994ae7 in interpolate_macro_with_args(char const*)
/devel/groff/src/preproc/eqn/lex.cpp:804:23
        #4 0x5f7f929911d6 in get_token(int)
/devel/groff/src/preproc/eqn/lex.cpp:876:8
        #5 0x5f7f92990969 in yylex()
/devel/groff/src/preproc/eqn/lex.cpp:1198:14
        #6 0x5f7f929dab10 in yyparse()
/devel/groff/src/preproc/eqn/eqn.cpp:1390:16
        #7 0x5f7f9298433d in do_file(_IO_FILE*, char const*)
/devel/groff/src/preproc/eqn/main.cpp:155:7
        #8 0x5f7f92982338 in main /devel/groff/src/preproc/eqn/main.cpp:483:5
    
    SUMMARY: AddressSanitizer: alloc-dealloc-mismatch
/devel/groff/src/preproc/eqn/lex.cpp:559:3 in
argument_macro_input::~argument_macro_input()
    
    * src/preproc/eqn/lex.cpp (argument_macro_input::~argument_macro_input):
Free
    the s field and the elements of the argv field using free(), not
delete[].

commit 36b1672086ba968676d15555a51d8e4a6f6f26c6
Author: Bruno Haible <[email protected]>
Date:   Sun Aug 2 13:54:48 2026 +0200

    pic: Fix undefined behaviour, part 1.
    
    This change fixes this ASAN finding:
    
    ERROR: AddressSanitizer: alloc-dealloc-mismatch (malloc vs operator delete
[]) on 0x76fae07e0330
        #0 0x56401fe1d9ed in operator delete[](void*)
/home/runner/work/llvm-project/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:179:46
        #1 0x56401fe67b0f in output::~output()
/devel/groff/src/preproc/pic/object.cpp:47:3
        #2 0x56401fea35a4 in common_output::~common_output()
/devel/groff/src/preproc/pic/common.h:20:7
        #3 0x56401feab614 in simple_output::~simple_output()
/devel/groff/src/preproc/pic/troff.cpp:37:7
        #4 0x56401fea657a in troff_output::~troff_output()
/devel/groff/src/preproc/pic/troff.cpp:276:1
        #5 0x56401fea65d4 in troff_output::~troff_output()
/devel/groff/src/preproc/pic/troff.cpp:274:1
        #6 0x56401fe67423 in main /devel/groff/src/preproc/pic/main.cpp:698:3
    
    0x76fae07e0330 is located 0 bytes inside of 7-byte region
[0x76fae07e0330,0x76fae07e0337)
    allocated by thread T0 here:
        #0 0x56401fdd9ee4 in malloc
/home/runner/work/llvm-project/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:67:3
        #1 0x56401febb677 in strsave(char const*)
/devel/groff/src/libs/libgroff/strsave.cpp:36:33
        #2 0x56401fe67d41 in output::set_args(char const*)
/devel/groff/src/preproc/pic/object.cpp:62:12
        #3 0x56401fe66356 in do_picture(_IO_FILE*)
/devel/groff/src/preproc/pic/main.cpp:297:10
        #4 0x56401fe64f4f in do_file(char const*)
/devel/groff/src/preproc/pic/main.cpp:395:2
        #5 0x56401fe67241 in main /devel/groff/src/preproc/pic/main.cpp:691:7
    
    SUMMARY: AddressSanitizer: alloc-dealloc-mismatch
/devel/groff/src/preproc/pic/object.cpp:47:3 in output::~output()
    
    * src/preproc/pic/object.cpp (output::~output, output::set_args): Free
the
    args field using free(), not delete[].

commit e8e78aad57634640d1cab556cadc2ca800cca220
Author: Bruno Haible <[email protected]>
Date:   Sun Aug 2 13:54:53 2026 +0200

    pic: Fix undefined behaviour, part 2.
    
    This change fixes this ASAN finding:
    
    ERROR: AddressSanitizer: alloc-dealloc-mismatch (malloc vs operator delete
[]) on 0x6db4f9de0790
        #0 0x609b694769ed in operator delete[](void*)
/home/runner/work/llvm-project/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:179:46
        #1 0x609b694c553f in command_object::~command_object()
/devel/groff/src/preproc/pic/object.cpp:488:3
        #2 0x609b694c5594 in command_object::~command_object()
/devel/groff/src/preproc/pic/object.cpp:487:1
        #3 0x609b694a7450 in parse_cleanup()
/devel/groff/src/preproc/pic/pic.ypp:1918:5
        #4 0x609b694bf43e in do_picture(_IO_FILE*)
/devel/groff/src/preproc/pic/main.cpp:303:5
        #5 0x609b694bdf4f in do_file(char const*)
/devel/groff/src/preproc/pic/main.cpp:395:2
        #6 0x609b694c0241 in main /devel/groff/src/preproc/pic/main.cpp:691:7
    
    0x6db4f9de0790 is located 0 bytes inside of 7-byte region
[0x6db4f9de0790,0x6db4f9de0797)
    allocated by thread T0 here:
        #0 0x609b69432ee4 in malloc
/home/runner/work/llvm-project/llvm-project/compiler-rt/lib/asan/asan_malloc_linux.cpp:67:3
        #1 0x609b69514657 in strsave(char const*)
/devel/groff/src/libs/libgroff/strsave.cpp:36:33
        #2 0x609b694b6c03 in yylex()
/devel/groff/src/preproc/pic/lex.cpp:1916:25
        #3 0x609b6947b944 in yyparse()
/devel/groff/src/preproc/pic/pic.cpp:2354:16
        #4 0x609b694bf3e0 in do_picture(_IO_FILE*)
/devel/groff/src/preproc/pic/main.cpp:299:9
        #5 0x609b694bdf4f in do_file(char const*)
/devel/groff/src/preproc/pic/main.cpp:395:2
        #6 0x609b694c0241 in main /devel/groff/src/preproc/pic/main.cpp:691:7
    
    SUMMARY: AddressSanitizer: alloc-dealloc-mismatch
/devel/groff/src/preproc/pic/object.cpp:488:3 in
command_object::~command_object()
    
    * src/preproc/pic/object.cpp (command_object::~command_object): Free the
    s field using free(), not delete[].

commit 240d9379b83775c65b878ccf599a41787d7977c6
Author: G. Branden Robinson <[email protected]>
Date:   Sun Aug 2 22:18:03 2026 -0500

    ChangeLog: Add entry for Savannah #68585 fix.
    
    Adapt Bruno's commit log messages to how we apply the GNU Coding
    Standards' prescribed format for change log entries.




    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?68585>

_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/

Attachment: signature.asc
Description: PGP signature

Reply via email to