• Sergey Vojtovich's avatar
    BUG#51877 - HANDLER interface causes invalid memory read · b57ef6d3
    Sergey Vojtovich authored
    Invalid memory read if HANDLER ... READ NEXT is executed
    after failed (e.g. empty table) HANDLER ... READ FIRST.
    
    The problem was that we attempted to perform READ NEXT,
    whereas there is no pivot available from failed READ FIRST.
    
    With this fix READ NEXT after failed READ FIRST equals
    to READ FIRST.
    
    This bug affects MyISAM tables only.
    
    mysql-test/r/gis-rtree.result:
      Restore a test case for BUG51357.
    mysql-test/r/handler_myisam.result:
      A test case for BUG#51877.
    mysql-test/t/gis-rtree.test:
      Restore a test case for BUG51357.
    mysql-test/t/handler_myisam.test:
      A test case for BUG#51877.
    storage/myisam/mi_rnext.c:
      "search first" failed. This means we have no pivot for
      "search next", or in other words MI_INFO::lastkey is
      likely uninitialized.
      
      Normally SQL layer would never request "search next" if
      "search first" failed. But HANDLER may do anything.
      
      As mi_rnext() without preceeding mi_rkey()/mi_rfirst()
      equals to mi_rfirst(), we must restore original state
      as if failing mi_rfirst() was not called.
    b57ef6d3
mi_rnext.c 4.01 KB