Commit 61a28619 authored by unknown's avatar unknown
Browse files

BUG#24855 - Crash mysqld 4.1.21 with corrupted tables

Accessing fixed record format table with crashed key definition results
in server/myisamchk segmentation fault.

This is fixed by refusing to open such tables. Affects MyISAM only.
No test case, since it requires crashed table.


myisam/mi_open.c:
  Refuse to open fixed record format table with key segment that includes
  BLOB part (which is true only for tables with crashed key definition).
parent 402c0426
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -315,7 +315,13 @@ MI_INFO *mi_open(const char *name, int mode, uint open_flags)
	for (j=0 ; j < share->keyinfo[i].keysegs; j++,pos++)
	{
	  disk_pos=mi_keyseg_read(disk_pos, pos);

          if (pos->flag & HA_BLOB_PART &&
              ! (share->options & (HA_OPTION_COMPRESS_RECORD |
                                   HA_OPTION_PACK_RECORD)))
          {
            my_errno= HA_ERR_CRASHED;
            goto err;
          }
	  if (pos->type == HA_KEYTYPE_TEXT || pos->type == HA_KEYTYPE_VARTEXT)
	  {
	    if (!pos->language)