From 490d20e8fb1c936324e3501196004592f46b3ff4 Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Thu, 16 Jun 2016 14:45:36 -0700 Subject: Self test for dictionary, and fixes. --- node/Dictionary.hpp | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'node') diff --git a/node/Dictionary.hpp b/node/Dictionary.hpp index e4c7ff20..dca8ac67 100644 --- a/node/Dictionary.hpp +++ b/node/Dictionary.hpp @@ -27,7 +27,7 @@ #include // Can be increased if it's ever needed, but not too much. -#define ZT_DICTIONARY_MAX_SIZE 16384 +#define ZT_DICTIONARY_MAX_SIZE 8194 namespace ZeroTier { @@ -279,6 +279,15 @@ public: for(unsigned int i=0;i 0) { + _d[j++] = '\n'; + if (j == ZT_DICTIONARY_MAX_SIZE) { + _d[i] = (char)0; + return false; + } + } + const char *p = key; while (*p) { _d[j++] = *(p++); @@ -287,9 +296,16 @@ public: return false; } } + + _d[j++] = '='; + if (j == ZT_DICTIONARY_MAX_SIZE) { + _d[i] = (char)0; + return false; + } + p = value; int k = 0; - while ((*p)&&((vlen < 0)||(k < vlen))) { + while ( ((*p)&&(vlen < 0)) || (k < vlen) ) { switch(*p) { case 0: case '\r': @@ -326,7 +342,9 @@ public: ++p; ++k; } - _d[j++] = (char)0; + + _d[j] = (char)0; + return true; } } -- cgit v1.2.3