• Alexey Kopytov's avatar
    Bug #42064: low memory crash when importing hex strings, in · c2ebb0ac
    Alexey Kopytov authored
                Item_hex_string::Item_hex_string
    
    The status of memory allocation in the Lex_input_stream (called
    from the Parser_state constructor) was not checked which led to
    a parser crash in case of the out-of-memory error.
    
    The solution is to introduce new init() member function in
    Parser_state and Lex_input_stream so that status of memory
    allocation can be returned to the caller.
    
    mysql-test/r/error_simulation.result:
      Added a test case for bug #42064.
    mysql-test/t/error_simulation.test:
      Added a test case for bug #42064.
    mysys/my_alloc.c:
      Added error injection code for the regression test.
    mysys/my_malloc.c:
      Added error injection code for the regression test.
    mysys/safemalloc.c:
      Added error injection code for the regression test.
    sql/event_data_objects.cc:
      Use the new init() member function of Parser_state and check
      its return value to handle memory allocation failures.
    sql/mysqld.cc:
      Added error injection code for the regression test.
    sql/sp.cc:
      Use the new init() member function of Parser_state and check
      its return value to handle memory allocation failures.
    sql/sql_lex.cc:
      Moved memory allocation from constructor to the separate init()
      member function.
      Added error injection code for the regression test.
    sql/sql_lex.h:
      Moved memory allocation from constructor to the separate init()
      member function.
    sql/sql_parse.cc:
      Use the new init() member function of Parser_state and check
      its return value to handle memory allocation failures.
    sql/sql_partition.cc:
      Use the new init() member function of Parser_state and check
      its return value to handle memory allocation failures.
    sql/sql_prepare.cc:
      Use the new init() member function of Parser_state and check
      its return value to handle memory allocation failures.
    sql/sql_trigger.cc:
      Use the new init() member function of Parser_state and check
      its return value to handle memory allocation failures.
    sql/sql_view.cc:
      Use the new init() member function of Parser_state and check
      its return value to handle memory allocation failures..
    sql/thr_malloc.cc:
      Added error injection code for the regression test.
    c2ebb0ac
sql_lex.cc 81.3 KB