summaryrefslogtreecommitdiff
path: root/sql/udf_example.c
diff options
context:
space:
mode:
authorVamsikrishna Bhagi <vamsikrishna.bhagi@oracle.com>2014-12-03 14:46:39 +0530
committerVamsikrishna Bhagi <vamsikrishna.bhagi@oracle.com>2014-12-03 14:46:39 +0530
commitcb9d0deb713f16956339f21af5e231dac63a9646 (patch)
tree345d1b959587368005b009b70cc9a307697773f0 /sql/udf_example.c
parentfa7b0180f552923811ba906bdbd5cc58f734e29a (diff)
downloadmariadb-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.c13
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;