summaryrefslogtreecommitdiff
path: root/storage/connect/value.cpp
diff options
context:
space:
mode:
authorSergei Golubchik <serg@mariadb.org>2016-03-17 17:40:53 +0100
committerSergei Golubchik <serg@mariadb.org>2016-03-21 11:43:19 +0100
commita2de604309e9b95292bfe81310ae247f6bfbee90 (patch)
treeaf8eb6e34089fe0fb1dd4959ac6199a05ac80f42 /storage/connect/value.cpp
parent2ed882f9c454e7c05b9ee81f7af37015fb8e7c68 (diff)
downloadmariadb-git-a2de604309e9b95292bfe81310ae247f6bfbee90.tar.gz
ASAN error in CONNECT engine
don't strcpy a string to itself
Diffstat (limited to 'storage/connect/value.cpp')
-rw-r--r--storage/connect/value.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/storage/connect/value.cpp b/storage/connect/value.cpp
index 80a694bfc26..422853f7cba 100644
--- a/storage/connect/value.cpp
+++ b/storage/connect/value.cpp
@@ -1627,6 +1627,12 @@ int TYPVAL<PSZ>::CompareValue(PVAL vp)
return (n > 0) ? 1 : (n < 0) ? -1 : 0;
} // end of CompareValue
+static inline void v_strcpy(char *dest, const char *src)
+{
+ if (dest != src)
+ strcpy(dest, src);
+}
+
/***********************************************************************/
/* Compute a function on a string. */
/***********************************************************************/
@@ -1651,11 +1657,11 @@ bool TYPVAL<PSZ>::Compute(PGLOBAL g, PVAL *vp, int np, OPVAL op)
break;
case OP_MIN:
assert(np == 2);
- strcpy(Strp, (strcmp(p[0], p[1]) < 0) ? p[0] : p[1]);
+ v_strcpy(Strp, (strcmp(p[0], p[1]) < 0) ? p[0] : p[1]);
break;
case OP_MAX:
assert(np == 2);
- strcpy(Strp, (strcmp(p[0], p[1]) > 0) ? p[0] : p[1]);
+ v_strcpy(Strp, (strcmp(p[0], p[1]) > 0) ? p[0] : p[1]);
break;
default:
// sprintf(g->Message, MSG(BAD_EXP_OPER), op);