summaryrefslogtreecommitdiff
path: root/storage/connect/tabcmg.cpp
diff options
context:
space:
mode:
authorOlivier Bertrand <bertrandop@gmail.com>2020-03-12 19:16:36 +0100
committerOlivier Bertrand <bertrandop@gmail.com>2020-03-12 19:16:36 +0100
commitd26b4eb4c071f39d2ff262026608d26e7a56309d (patch)
treef8ed01ab17f186aa3e0175c143d5345def73dc2c /storage/connect/tabcmg.cpp
parent4ba36cfa0c677b7d094092d6aa5541c6c936a11f (diff)
parent51e9381dcc01ebd72d4f0adc057a64213f850d70 (diff)
downloadmariadb-git-d26b4eb4c071f39d2ff262026608d26e7a56309d.tar.gz
Pull new version from origin
Diffstat (limited to 'storage/connect/tabcmg.cpp')
-rw-r--r--storage/connect/tabcmg.cpp23
1 files changed, 14 insertions, 9 deletions
diff --git a/storage/connect/tabcmg.cpp b/storage/connect/tabcmg.cpp
index da1cfd34ac7..b9b7f6e4b60 100644
--- a/storage/connect/tabcmg.cpp
+++ b/storage/connect/tabcmg.cpp
@@ -53,25 +53,30 @@ bool CMGDISC::FindInDoc(PGLOBAL g, bson_iter_t *iter, const bson_t *doc,
{
if (!doc || bson_iter_init(iter, doc)) {
const char *key;
- char colname[65];
- char fmt[129];
- bool newcol;
+ char colname[65];
+ char fmt[129];
+ bool newcol;
+ size_t n;
while (bson_iter_next(iter)) {
key = bson_iter_key(iter);
newcol = true;
if (pcn) {
- strncpy(colname, pcn, 64);
- colname[64] = 0;
- strncat(strncat(colname, "_", 65), key, 65);
+ n = sizeof(colname) - 1;
+ strncpy(colname, pcn, n);
+ colname[n] = 0;
+ n -= strlen(colname);
+ strncat(strncat(colname, "_", n), key, n - 1);
} else
strcpy(colname, key);
if (pfmt) {
- strncpy(fmt, pfmt, 128);
- fmt[128] = 0;
- strncat(strncat(fmt, ".", 129), key, 129);
+ n = sizeof(fmt) - 1;
+ strncpy(fmt, pfmt, n);
+ fmt[n] = 0;
+ n -= strlen(fmt);
+ strncat(strncat(fmt, ".", n), key, n - 1);
} else
strcpy(fmt, key);