• unknown's avatar
    Fixed bug #31036: Using order by with archive table crashes server. · 1c2a5377
    unknown authored
    1. Memory overrun have been fixed.
    2. Server failure on assertion has been fixed.
    
    
    storage/archive/azio.c:
      Fixed bug #31036.
      The ha_archive::rnd_pos function has been modified to take
      into account the result of the azseek function and
      to return HA_ERR_CRASHED_ON_USAGE in case of seek error.
    storage/archive/ha_archive.cc:
      Fixed bug #31036.
      1. Memory overrun has been fixed: maximal sizes of azio_stream::inbuf
         and azio_stream::outbuf was mixed.
      2. Zero value of the output parameter of the azread function was
         incorrectly interpreted by the azseek function: after the first
         successful read attempt the execution of the azseek loop was
         interrupted and negative value was returned.
         (See ha_archive::rnd_pos: that negative value was silently ignored,
         and an incomplete data was used, for example, as a size of a packed
         record, and server failed with the assertion:
         "row_len <= record_buffer->length".)
    mysql-test/t/archive.test:
      Added test case for bug #31036.
    mysql-test/r/archive.result:
      Added test case for bug #31036.
    1c2a5377
ha_archive.cc 44.5 KB