diff options
author | Monty <monty@mariadb.org> | 2018-01-19 19:56:34 +0200 |
---|---|---|
committer | Monty <monty@mariadb.org> | 2018-01-30 21:33:56 +0200 |
commit | 486c86dd391546fcd181cf4767768b2ee4986ef2 (patch) | |
tree | f9090e39c73b4aed58b3c063e9c23880338c167f /sql/sql_string.h | |
parent | f55dc7f733446a201e3b465ae03a0388d192a3ad (diff) | |
download | mariadb-git-486c86dd391546fcd181cf4767768b2ee4986ef2.tar.gz |
Added some checking that LEX_CSTRING is \0 terminated
- When adding LEX_CSTRING to String, we are now checking that
string is \0 terminated (as normally LEX_CSTRING should be
usable for printf(). In the cases when one wants to avoid the
checking one can use String->append(ptr, length) instead of just
String->append(LEX_CSTRING*)
Diffstat (limited to 'sql/sql_string.h')
-rw-r--r-- | sql/sql_string.h | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/sql/sql_string.h b/sql/sql_string.h index 41d31dc33c2..fda90f9543e 100644 --- a/sql/sql_string.h +++ b/sql/sql_string.h @@ -477,19 +477,18 @@ public: bool append(const char *s); bool append(const LEX_STRING *ls) { - DBUG_ASSERT(ls->length < UINT_MAX32); + DBUG_ASSERT(ls->length < UINT_MAX32 && + ((ls->length == 0 && !ls->str) || + ls->length == strlen(ls->str))); return append(ls->str, (uint32) ls->length); } bool append(const LEX_CSTRING *ls) { - DBUG_ASSERT(ls->length < UINT_MAX32); + DBUG_ASSERT(ls->length < UINT_MAX32 && + ((ls->length == 0 && !ls->str) || + ls->length == strlen(ls->str))); return append(ls->str, (uint32) ls->length); } - bool append(const LEX_CSTRING &ls) - { - DBUG_ASSERT(ls.length < UINT_MAX32); - return append(ls.str, (uint32) ls.length); - } bool append(const char *s, size_t size); bool append(const char *s, uint arg_length, CHARSET_INFO *cs); bool append_ulonglong(ulonglong val); @@ -582,7 +581,9 @@ public: } void q_append(const LEX_CSTRING *ls) { - DBUG_ASSERT(ls->length < UINT_MAX32); + DBUG_ASSERT(ls->length < UINT_MAX32 && + ((ls->length == 0 && !ls->str) || + ls->length == strlen(ls->str))); q_append(ls->str, (uint32) ls->length); } @@ -595,9 +596,12 @@ public: { qs_append(str, (uint32)strlen(str)); } - void qs_append(const LEX_CSTRING *str) + void qs_append(const LEX_CSTRING *ls) { - qs_append(str->str, str->length); + DBUG_ASSERT(ls->length < UINT_MAX32 && + ((ls->length == 0 && !ls->str) || + ls->length == strlen(ls->str))); + qs_append(ls->str, ls->length); } void qs_append(const char *str, uint32 len); void qs_append_hex(const char *str, uint32 len); |