diff options
author | Sergei Golubchik <serg@mariadb.org> | 2016-03-17 17:40:53 +0100 |
---|---|---|
committer | Sergei Golubchik <serg@mariadb.org> | 2016-03-21 11:43:19 +0100 |
commit | a2de604309e9b95292bfe81310ae247f6bfbee90 (patch) | |
tree | af8eb6e34089fe0fb1dd4959ac6199a05ac80f42 /storage/connect/value.cpp | |
parent | 2ed882f9c454e7c05b9ee81f7af37015fb8e7c68 (diff) | |
download | mariadb-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.cpp | 10 |
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); |