diff options
author | Vamsikrishna Bhagi <vamsikrishna.bhagi@oracle.com> | 2014-12-03 14:46:39 +0530 |
---|---|---|
committer | Vamsikrishna Bhagi <vamsikrishna.bhagi@oracle.com> | 2014-12-03 14:46:39 +0530 |
commit | cb9d0deb713f16956339f21af5e231dac63a9646 (patch) | |
tree | 345d1b959587368005b009b70cc9a307697773f0 /sql/udf_example.c | |
parent | fa7b0180f552923811ba906bdbd5cc58f734e29a (diff) | |
download | mariadb-git-cb9d0deb713f16956339f21af5e231dac63a9646.tar.gz |
Bug #19688008 CREATE_ASYMMETRIC_PUB_KEY: CRASHES IN OPENSSL
CODE
Problem: UDF doesn't handle the arguments properly when they
are of string type due to a misplaced break.
The length of arguments is also not set properly
when the argument is NULL.
Solution: Fixed the code by putting the break at right place
and setting the argument length to zero when the
argument is NULL.
Diffstat (limited to 'sql/udf_example.c')
-rw-r--r-- | sql/udf_example.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/sql/udf_example.c b/sql/udf_example.c index bfd153b7d28..af625b7ebf0 100644 --- a/sql/udf_example.c +++ b/sql/udf_example.c @@ -1,4 +1,4 @@ -/* Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. +/* Copyright (c) 2000, 2014, 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 @@ -295,9 +295,20 @@ char *metaphon(UDF_INIT *initid __attribute__((unused)), if (!word) /* Null argument */ { + /* The length is expected to be zero when the argument is NULL. */ + assert(args->lengths[0] == 0); *is_null=1; return 0; } + else + { + /* + A check to confirm that argument length has the value it is + expected to have. + */ + assert(strlen(word) == args->lengths[0]); + } + w_end=word+args->lengths[0]; org_result=result; |