octave:1> test liboctave/array/Sparse.cc-tst ================================================================= ==23583==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6110000468ff at pc 0x7fef5e8932da bp 0x7ffded0be000 sp 0x7ffded0bdff0 READ of size 1 at 0x6110000468ff thread T0 #0 0x7fef5e8932d9 in octave::lexer::fill_flex_buffer(char*, unsigned int) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x158d2d9) #1 0x7fef5e882509 in yy_get_next_buffer(void*) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x157c509) #2 0x7fef5e8811e7 in octave_lex(OCTAVE_STYPE*, void*) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x157b1e7) #3 0x7fef5e8a0b6f in octave_pull_parse(octave_pstate*, octave::base_parser&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x159ab6f) #4 0x7fef5e8c8648 in octave::parser::run() (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x15c2648) #5 0x7fef5e8d3539 in octave::eval_string(std::__cxx11::basic_string, std::allocator > const&, bool, int&, int) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x15cd539) #6 0x7fef5e8d4275 in octave::eval_string(octave_value const&, bool, int&, int) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x15ce275) #7 0x7fef5e8d4685 in Feval(octave_value_list const&, int) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x15ce685) #8 0x7fef5e4d0c1f in octave_builtin::call(octave::tree_evaluator&, int, octave_value_list const&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x11cac1f) #9 0x7fef5e928fd9 in octave::tree_evaluator::visit_index_expression(octave::tree_index_expression&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1622fd9) #10 0x7fef5e970932 in octave::tree_index_expression::accept(octave::tree_walker&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x166a932) #11 0x7fef5e596ad0 in octave::tree_evaluator::evaluate(octave::tree_expression*, int) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1290ad0) #12 0x7fef5e933fbd in octave::tree_evaluator::visit_statement(octave::tree_statement&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x162dfbd) #13 0x7fef5e986f30 in octave::tree_statement::accept(octave::tree_walker&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1680f30) #14 0x7fef5e9343c6 in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x162e3c6) #15 0x7fef5e597516 in octave::tree_statement_list::accept(octave::tree_walker&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1291516) #16 0x7fef5e9350e2 in octave::tree_evaluator::visit_try_catch_command(octave::tree_try_catch_command&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x162f0e2) #17 0x7fef5e968b58 in octave::tree_try_catch_command::accept(octave::tree_walker&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1662b58) #18 0x7fef5e933ca6 in octave::tree_evaluator::visit_statement(octave::tree_statement&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x162dca6) #19 0x7fef5e986f30 in octave::tree_statement::accept(octave::tree_walker&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1680f30) #20 0x7fef5e9343c6 in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x162e3c6) #21 0x7fef5e597516 in octave::tree_statement_list::accept(octave::tree_walker&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1291516) #22 0x7fef5e9276e0 in octave::tree_evaluator::visit_if_command_list(octave::tree_if_command_list&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x16216e0) #23 0x7fef5e91101e in octave::tree_if_command_list::accept(octave::tree_walker&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x160b01e) #24 0x7fef5e92736c in octave::tree_evaluator::visit_if_command(octave::tree_if_command&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x162136c) #25 0x7fef5e983cde in octave::tree_if_command::accept(octave::tree_walker&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x167dcde) #26 0x7fef5e933ca6 in octave::tree_evaluator::visit_statement(octave::tree_statement&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x162dca6) #27 0x7fef5e986f30 in octave::tree_statement::accept(octave::tree_walker&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1680f30) #28 0x7fef5e9343c6 in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x162e3c6) #29 0x7fef5e597516 in octave::tree_statement_list::accept(octave::tree_walker&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1291516) #30 0x7fef5e9276e0 in octave::tree_evaluator::visit_if_command_list(octave::tree_if_command_list&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x16216e0) #31 0x7fef5e91101e in octave::tree_if_command_list::accept(octave::tree_walker&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x160b01e) #32 0x7fef5e92736c in octave::tree_evaluator::visit_if_command(octave::tree_if_command&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x162136c) #33 0x7fef5e983cde in octave::tree_if_command::accept(octave::tree_walker&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x167dcde) #34 0x7fef5e933ca6 in octave::tree_evaluator::visit_statement(octave::tree_statement&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x162dca6) #35 0x7fef5e986f30 in octave::tree_statement::accept(octave::tree_walker&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1680f30) #36 0x7fef5e9343c6 in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x162e3c6) #37 0x7fef5e597516 in octave::tree_statement_list::accept(octave::tree_walker&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1291516) #38 0x7fef5e936423 in octave::tree_evaluator::visit_unwind_protect_command(octave::tree_unwind_protect_command&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1630423) #39 0x7fef5e968bcc in octave::tree_unwind_protect_command::accept(octave::tree_walker&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1662bcc) #40 0x7fef5e933ca6 in octave::tree_evaluator::visit_statement(octave::tree_statement&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x162dca6) #41 0x7fef5e986f30 in octave::tree_statement::accept(octave::tree_walker&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1680f30) #42 0x7fef5e9343c6 in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x162e3c6) #43 0x7fef5e597516 in octave::tree_statement_list::accept(octave::tree_walker&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1291516) #44 0x7fef5e92464a in octave::tree_evaluator::visit_simple_for_command(octave::tree_simple_for_command&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x161e64a) #45 0x7fef5e977284 in octave::tree_simple_for_command::accept(octave::tree_walker&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1671284) #46 0x7fef5e933ca6 in octave::tree_evaluator::visit_statement(octave::tree_statement&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x162dca6) #47 0x7fef5e986f30 in octave::tree_statement::accept(octave::tree_walker&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1680f30) #48 0x7fef5e9343c6 in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x162e3c6) #49 0x7fef5e597516 in octave::tree_statement_list::accept(octave::tree_walker&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1291516) #50 0x7fef5e72a6f1 in octave_user_function::call(octave::tree_evaluator&, int, octave_value_list const&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x14246f1) #51 0x7fef5e928fd9 in octave::tree_evaluator::visit_index_expression(octave::tree_index_expression&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1622fd9) #52 0x7fef5e970932 in octave::tree_index_expression::accept(octave::tree_walker&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x166a932) #53 0x7fef5e596ad0 in octave::tree_evaluator::evaluate(octave::tree_expression*, int) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1290ad0) #54 0x7fef5e933fbd in octave::tree_evaluator::visit_statement(octave::tree_statement&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x162dfbd) #55 0x7fef5e986f30 in octave::tree_statement::accept(octave::tree_walker&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1680f30) #56 0x7fef5e9343c6 in octave::tree_evaluator::visit_statement_list(octave::tree_statement_list&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x162e3c6) #57 0x7fef5e597516 in octave::tree_statement_list::accept(octave::tree_walker&) (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1291516) #58 0x7fef5f07db73 in octave::interpreter::main_loop() (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1d77b73) #59 0x7fef5f07abf0 in octave::interpreter::execute() (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x1d74bf0) #60 0x7fef5daec024 in octave::cli_application::execute() (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x7e6024) #61 0x402084 in main (/home/dima/src/octave/gcc_asan/src/.libs/lt-octave-cli+0x402084) #62 0x7fef54dca4d9 in __libc_start_main (/lib64/libc.so.6+0x204d9) #63 0x4019f9 in _start (/home/dima/src/octave/gcc_asan/src/.libs/lt-octave-cli+0x4019f9) 0x6110000468ff is located 1 bytes to the left of 227-byte region [0x611000046900,0x6110000469e3) allocated by thread T0 here: #0 0x7fef5fe11158 in operator new(unsigned long) (/lib64/libasan.so.4+0xe0158) #1 0x7fef55c1b05e in std::__cxx11::basic_string, std::allocator >::_M_assign(std::__cxx11::basic_string, std::allocator > const&) (/lib64/libstdc++.so.6+0x12505e) SUMMARY: AddressSanitizer: heap-buffer-overflow (/home/dima/src/octave/gcc_asan/libinterp/.libs/liboctinterp.so.4+0x158d2d9) in octave::lexer::fill_flex_buffer(char*, unsigned int) Shadow bytes around the buggy address: 0x0c2280000cc0: fd fd fd fd fd fa fa fa fa fa fa fa fa fa fa fa 0x0c2280000cd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x0c2280000ce0: 00 00 00 00 00 00 00 00 00 00 00 00 03 fa fa fa 0x0c2280000cf0: fa fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00 0x0c2280000d00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 =>0x0c2280000d10: 00 00 00 00 03 fa fa fa fa fa fa fa fa fa fa[fa] 0x0c2280000d20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x0c2280000d30: 00 00 00 00 00 00 00 00 00 00 00 00 03 fa fa fa 0x0c2280000d40: fa fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00 0x0c2280000d50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x0c2280000d60: 00 00 00 00 03 fa fa fa fa fa fa fa fa fa fa fa Shadow byte legend (one shadow byte represents 8 application bytes): Addressable: 00 Partially addressable: 01 02 03 04 05 06 07 Heap left redzone: fa Freed heap region: fd Stack left redzone: f1 Stack mid redzone: f2 Stack right redzone: f3 Stack after return: f5 Stack use after scope: f8 Global redzone: f9 Global init order: f6 Poisoned by user: f7 Container overflow: fc Array cookie: ac Intra object redzone: bb ASan internal: fe Left alloca redzone: ca Right alloca redzone: cb ==23583==ABORTING