From 61a2861973c7e4e7fa9fa1e48ed3499390c72d56 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 16 Jan 2007 18:05:37 +0400 Subject: [PATCH] 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). --- myisam/mi_open.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/myisam/mi_open.c b/myisam/mi_open.c index 4efe6f42d5e..047686278b4 100644 --- a/myisam/mi_open.c +++ b/myisam/mi_open.c @@ -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)