diff options
author | Olivier Bertrand <bertrandop@gmail.com> | 2020-03-12 19:16:36 +0100 |
---|---|---|
committer | Olivier Bertrand <bertrandop@gmail.com> | 2020-03-12 19:16:36 +0100 |
commit | d26b4eb4c071f39d2ff262026608d26e7a56309d (patch) | |
tree | f8ed01ab17f186aa3e0175c143d5345def73dc2c /storage/connect/tabcmg.cpp | |
parent | 4ba36cfa0c677b7d094092d6aa5541c6c936a11f (diff) | |
parent | 51e9381dcc01ebd72d4f0adc057a64213f850d70 (diff) | |
download | mariadb-git-d26b4eb4c071f39d2ff262026608d26e7a56309d.tar.gz |
Pull new version from origin
Diffstat (limited to 'storage/connect/tabcmg.cpp')
-rw-r--r-- | storage/connect/tabcmg.cpp | 23 |
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); |