summaryrefslogtreecommitdiff
path: root/sql/sql_handler.cc
diff options
context:
space:
mode:
authorGuilhem Bichot <guilhem.bichot@oracle.com>2011-02-11 15:00:09 +0100
committerGuilhem Bichot <guilhem.bichot@oracle.com>2011-02-11 15:00:09 +0100
commit77c0f33ee2b2ad46088364630275735f9d744ed2 (patch)
treed9d6129bd645413a78561d42f1fdc9c9b94cb638 /sql/sql_handler.cc
parente9fc441a525de89be0295ef1766c72a7e39c9b1d (diff)
downloadmariadb-git-77c0f33ee2b2ad46088364630275735f9d744ed2.tar.gz
Fix for BUG#59894
"set optimizer_switch to e or d causes invalid memory writes/valgrind warnings": due to prefix support, the argument "e" was overwritten with its full value "engine_condition_pushdown", which caused a buffer overrun. This was wrong usage of find_type(); other wrong usages are fixed here too. Please start reading with the comment of typelib.c.
Diffstat (limited to 'sql/sql_handler.cc')
-rw-r--r--sql/sql_handler.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/sql/sql_handler.cc b/sql/sql_handler.cc
index b5cd3ac9e9a..cd40af5a46d 100644
--- a/sql/sql_handler.cc
+++ b/sql/sql_handler.cc
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000-2004 MySQL AB, 2008-2009 Sun Microsystems, Inc
+/* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -613,7 +613,8 @@ retry:
if (keyname)
{
- if ((keyno=find_type(keyname, &table->s->keynames, 1+2)-1)<0)
+ if ((keyno= find_type(keyname, &table->s->keynames,
+ FIND_TYPE_NO_PREFIX) - 1) < 0)
{
my_error(ER_KEY_DOES_NOT_EXITS, MYF(0), keyname, tables->alias);
goto err;