diff options
author | Guilhem Bichot <guilhem.bichot@oracle.com> | 2011-02-11 15:00:09 +0100 |
---|---|---|
committer | Guilhem Bichot <guilhem.bichot@oracle.com> | 2011-02-11 15:00:09 +0100 |
commit | 77c0f33ee2b2ad46088364630275735f9d744ed2 (patch) | |
tree | d9d6129bd645413a78561d42f1fdc9c9b94cb638 /sql/sql_help.cc | |
parent | e9fc441a525de89be0295ef1766c72a7e39c9b1d (diff) | |
download | mariadb-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_help.cc')
-rw-r--r-- | sql/sql_help.cc | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/sql/sql_help.cc b/sql/sql_help.cc index 7d106fbe936..858205f8da6 100644 --- a/sql/sql_help.cc +++ b/sql/sql_help.cc @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 MySQL AB +/* 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 @@ -284,10 +284,12 @@ int get_topics_for_keyword(THD *thd, TABLE *topics, TABLE *relations, Field *rtopic_id, *rkey_id; DBUG_ENTER("get_topics_for_keyword"); - if ((iindex_topic= find_type((char*) primary_key_name, - &topics->s->keynames, 1+2)-1)<0 || - (iindex_relations= find_type((char*) primary_key_name, - &relations->s->keynames, 1+2)-1)<0) + if ((iindex_topic= + find_type(primary_key_name, &topics->s->keynames, + FIND_TYPE_NO_PREFIX) - 1) < 0 || + (iindex_relations= + find_type(primary_key_name, &relations->s->keynames, + FIND_TYPE_NO_PREFIX) - 1) < 0) { my_message(ER_CORRUPT_HELP_DB, ER(ER_CORRUPT_HELP_DB), MYF(0)); DBUG_RETURN(-1); |