Commit a64d12ce authored by ramil/ram@mysql.com/ramil.myoffice.izhnet.ru's avatar ramil/ram@mysql.com/ramil.myoffice.izhnet.ru
Browse files

Fix for bug #33758: Got query result when using ORDER BY ASC, but

empty result when using DESC

Problem: fetching MyISAM keys we copy a key block pointer to the end of the key buffer.
However, we don't take into account the pointer length calculatig the buffer size,
that may leads to memory overwriting and in turn to unpredictable results.

Fix: increase key buffer size by length of the key block pointer.

Note: no simple test case.
parent 3b5c25ba
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -270,6 +270,9 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags)
    if (share->options & HA_OPTION_COMPRESS_RECORD)
      share->base.max_key_length+=2;	/* For safety */

    /* Add space for node pointer */
    share->base.max_key_length+= share->base.key_reflength;

    if (!my_multi_malloc(MY_WME,
			 &share,sizeof(*share),
			 &share->state.rec_per_key_part,sizeof(long)*key_parts,