summaryrefslogtreecommitdiff
path: root/sql/set_var.cc
diff options
context:
space:
mode:
authorunknown <acurtis@pcgem.rdg.cyberkinetica.com>2004-12-21 11:09:48 +0000
committerunknown <acurtis@pcgem.rdg.cyberkinetica.com>2004-12-21 11:09:48 +0000
commitc6b6977b9ee65258eef6f55a17fea8c68dcf1a0d (patch)
tree238cf13dc9bfe57fb5e834890642af1b9f92f035 /sql/set_var.cc
parent5c185dfd5f157f591377377ad7f958f064856dfa (diff)
downloadmariadb-git-c6b6977b9ee65258eef6f55a17fea8c68dcf1a0d.tar.gz
Bug#6481 - storage_engine system variable allows nonsensical value
Check that the requested storage engine is enabled.
Diffstat (limited to 'sql/set_var.cc')
-rw-r--r--sql/set_var.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/sql/set_var.cc b/sql/set_var.cc
index d10ea3e11c1..e39d9934278 100644
--- a/sql/set_var.cc
+++ b/sql/set_var.cc
@@ -2945,9 +2945,11 @@ bool sys_var_thd_storage_engine::check(THD *thd, set_var *var)
if (var->value->result_type() == STRING_RESULT)
{
+ enum db_type db_type;
if (!(res=var->value->val_str(&str)) ||
!(var->save_result.ulong_value=
- (ulong) ha_resolve_by_name(res->ptr(), res->length())))
+ (ulong) db_type= ha_resolve_by_name(res->ptr(), res->length())) ||
+ ha_checktype(db_type) != db_type)
{
value= res ? res->c_ptr() : "NULL";
goto err;