From bf693a777274239559fe5dc7b3cf99ce2a901239 Mon Sep 17 00:00:00 2001 From: MiesSuomesta <32951624+MiesSuomesta@users.noreply.github.com> Date: Thu, 19 Dec 2019 07:39:40 +0200 Subject: [PATCH] Delete json-master.patches --- json-master.patches | 582 -------------------------------------------- 1 file changed, 582 deletions(-) delete mode 100644 json-master.patches diff --git a/json-master.patches b/json-master.patches deleted file mode 100644 index ee5516f..0000000 --- a/json-master.patches +++ /dev/null @@ -1,582 +0,0 @@ -commit ea817e4eb61c4ff834ecf198c4a3bdfa4745841b -Author: Lauri Jakku -Date: Thu Dec 19 07:19:23 2019 +0200 - - Optimization to default - -diff --git a/json_object.c b/json_object.c -index d44754b..4b5a70b 100644 ---- a/json_object.c -+++ b/json_object.c -@@ -10,7 +10,7 @@ - * - */ - --#pragma GCC optimize ("O0") -+//#pragma GCC optimize ("O0") - - #include "config.h" - - -commit 79a37997c74c2437b9f202aeb693f878752790be -Author: Lauri Jakku -Date: Thu Dec 19 00:02:28 2019 +0200 - - stringdup bug fix - -diff --git a/json_object.c b/json_object.c -index 86fd692..d44754b 100644 ---- a/json_object.c -+++ b/json_object.c -@@ -485,7 +485,7 @@ static char *stringdup(const char *s) - return NULL; - - new[len] = 0; -- return (char *) memcpy (new, s, len-1); -+ return (char *) memcpy (new, s, len); - } - - - -commit b9f22447479419745b9b865ff4303eb6f361a970 -Author: Lauri Jakku -Date: Wed Dec 18 05:52:52 2019 +0200 - - Few segfaults away - -diff --git a/json_object.c b/json_object.c -index 18b3bd5..86fd692 100644 ---- a/json_object.c -+++ b/json_object.c -@@ -219,14 +219,16 @@ static void json_object_generic_delete(struct json_object* jso) - lh_table_delete(json_object_table, jso); - #endif /* REFCOUNT_DEBUG */ - printbuf_free(jso->_pb); -+ jso->_pb = NULL; - free(jso); -+ jso= NULL; - } - - static struct json_object* json_object_new(enum json_type o_type) - { - struct json_object *jso; - -- jso = (struct json_object*)calloc(sizeof(struct json_object), 1); -+ jso = (struct json_object*)calloc(1, sizeof(struct json_object)); - if (!jso) - return NULL; - jso->o_type = o_type; -@@ -474,6 +476,19 @@ struct lh_table* json_object_get_object(const struct json_object *jso) - } - } - -+static char *stringdup(const char *s) -+{ -+ size_t len = strnlen (s, 1024) + 1; -+ char *new = malloc (len); -+ -+ if (new == NULL) -+ return NULL; -+ -+ new[len] = 0; -+ return (char *) memcpy (new, s, len-1); -+} -+ -+ - int json_object_object_add_ex(struct json_object* jso, - const char *const key, - struct json_object *const val, -@@ -488,9 +503,9 @@ int json_object_object_add_ex(struct json_object* jso, - // We lookup the entry and replace the value, rather than just deleting - // and re-adding it, so the existing key remains valid. - hash = lh_get_hash(jso->o.c_object, (const void *)key); -- existing_entry = (opts & JSON_C_OBJECT_ADD_KEY_IS_NEW) ? NULL : -- lh_table_lookup_entry_w_hash(jso->o.c_object, -- (const void *)key, hash); -+ existing_entry = (opts & JSON_C_OBJECT_ADD_KEY_IS_NEW) ? -+ NULL : -+ lh_table_lookup_entry_w_hash(jso->o.c_object, (const void *)key, hash); - - // The caller must avoid creating loops in the object tree, but do a - // quick check anyway to make sure we're not creating a trivial loop. -@@ -499,17 +514,26 @@ int json_object_object_add_ex(struct json_object* jso, - - if (!existing_entry) - { -- const void *const k = (opts & JSON_C_OBJECT_KEY_IS_CONSTANT) ? -- (const void *)key : strdup(key); -+ char *key_dup = stringdup(key); -+ -+ /* key duplicate must be done first */ -+ const void *const k = ((opts & JSON_C_OBJECT_KEY_IS_CONSTANT) ? (const void *)key : (const void *)key_dup); -+ -+ /* key duplicate must be freed here if constant */ -+ if (opts & JSON_C_OBJECT_KEY_IS_CONSTANT) -+ free(key_dup); -+ - if (k == NULL) - return -1; -+ - return lh_table_insert_w_hash(jso->o.c_object, k, val, hash, opts); -+ } else { -+ existing_value = (json_object *) lh_entry_v(existing_entry); -+ if (existing_value) -+ json_object_put(existing_value); -+ existing_entry->v = val; -+ return 0; - } -- existing_value = (json_object *) lh_entry_v(existing_entry); -- if (existing_value) -- json_object_put(existing_value); -- existing_entry->v = val; -- return 0; - } - - int json_object_object_add(struct json_object* jso, const char *key, -diff --git a/linkhash.c b/linkhash.c -index f324a10..3e65302 100644 ---- a/linkhash.c -+++ b/linkhash.c -@@ -563,7 +563,9 @@ void lh_table_free(struct lh_table *t) - t->free_fn(c); - } - free(t->table); -+ t->table = NULL; - free(t); -+ t = NULL; - } - - -diff --git a/printbuf.c b/printbuf.c -index 3f87f77..3fb8e4b 100644 ---- a/printbuf.c -+++ b/printbuf.c -@@ -71,7 +71,8 @@ static int printbuf_extend(struct printbuf *p, int min_size) - int new_size; - - if( -- (p != NULL) && -+ (p != NULL) && -+ (p->buf != NULL) && - (p->size >= min_size) - ) - return 0; -@@ -87,18 +88,17 @@ static int printbuf_extend(struct printbuf *p, int min_size) - p->bpos, min_size, p->size, new_size); - #endif /* PRINTBUF_DEBUG */ - -- if( -- (p != NULL) && -- (p->buf != NULL) -- ) -+ if (p != NULL) - { - t = (char*)calloc(1, new_size); -- if (t != NULL) { -+ if ( (t != NULL) && -+ (p->buf != NULL)) -+ { - memcpy(t, p->buf, p->size); - } - } - -- if(t == NULL) -+ if (t == NULL) - return -1; - - p->size = new_size; -@@ -109,9 +109,17 @@ static int printbuf_extend(struct printbuf *p, int min_size) - - int printbuf_memappend(struct printbuf *p, const char *buf, int size) - { -+ -+ if ( (p->size > 0) && (p->buf == NULL)) { -+ int size_wanted = p->size; -+ p->size = 0; -+ if (printbuf_extend(p, size_wanted) < 0) -+ return -1; -+ } -+ - if (p->size <= p->bpos + size + 1) { -- if (printbuf_extend(p, p->bpos + size + 1) < 0) -- return -1; -+ if (printbuf_extend(p, p->bpos + size + 1) < 0) -+ return -2; - } - memcpy(p->buf + p->bpos, buf, size); - p->bpos += size; -@@ -172,7 +180,10 @@ void printbuf_reset(struct printbuf *p) - { - if (p != NULL) - { -- if ( (p->size > 0) && (p->buf != NULL) ) { -+ if ( (p->size > 0) && -+ (p->buf != NULL) -+ ) -+ { - p->buf[0] = '\0'; - } - -@@ -183,8 +194,12 @@ void printbuf_reset(struct printbuf *p) - void printbuf_free(struct printbuf *p) - { - if(p) { -- free(p->buf); -+ -+ if (p->buf != NULL) -+ free(p->buf); -+ - p->buf = NULL; -+ - free(p); - p = NULL; - } - -commit 827255a466d2d366bc3c68f90486dd5069341638 -Author: Lauri Jakku -Date: Wed Dec 18 00:26:34 2019 +0200 - - Tweaks & modifications - -diff --git a/json_object.c b/json_object.c -index 74d5266..18b3bd5 100644 ---- a/json_object.c -+++ b/json_object.c -@@ -10,6 +10,8 @@ - * - */ - -+#pragma GCC optimize ("O0") -+ - #include "config.h" - - #include "strerror_override.h" -@@ -143,16 +145,13 @@ static int json_escape_str(struct printbuf *pb, const char *str, int len, int fl - default: - if(c < ' ') - { -- char sbuf[7]; - if(pos - start_offset > 0) - printbuf_memappend(pb, - str + start_offset, - pos - start_offset); -- snprintf(sbuf, sizeof(sbuf), -- "\\u00%c%c", -- json_hex_chars[c >> 4], -- json_hex_chars[c & 0xf]); -- printbuf_memappend_fast(pb, sbuf, (int) sizeof(sbuf) - 1); -+ sprintbuf(pb, "\\u00%c%c", -+ json_hex_chars[c >> 4], -+ json_hex_chars[c & 0xf]); - start_offset = ++pos; - } else - pos++; -@@ -325,24 +324,30 @@ const char* json_object_to_json_string_length(struct json_object *jso, int flags - const char *r = NULL; - size_t s = 0; - -- if (!jso) -- { -- s = 4; -- r = "null"; -- } -- else if ((jso->_pb) || (jso->_pb = printbuf_new())) -+ /* Failure case set first */ -+ s = 4; -+ r = "null"; -+ -+ if (jso) - { -- printbuf_reset(jso->_pb); -+ if ( jso->_pb == NULL ) -+ jso->_pb = printbuf_new(); - -- if(jso->_to_json_string(jso, jso->_pb, 0, flags) >= 0) -+ if ( jso->_pb != NULL ) - { -- s = (size_t)jso->_pb->bpos; -- r = jso->_pb->buf; -+ printbuf_reset(jso->_pb); -+ -+ if(jso->_to_json_string(jso, jso->_pb, 0, flags) >= 0) -+ { -+ s = (size_t)jso->_pb->bpos; -+ r = jso->_pb->buf; -+ } - } - } - - if (length) - *length = s; -+ - return r; - } - -@@ -400,10 +405,12 @@ static int json_object_object_to_json_string(struct json_object* jso, - indent(pb, level+1, flags); - printbuf_strappend(pb, "\""); - json_escape_str(pb, iter.key, strlen(iter.key), flags); -+ - if (flags & JSON_C_TO_STRING_SPACED) - printbuf_strappend(pb, "\": "); - else - printbuf_strappend(pb, "\":"); -+ - if(iter.val == NULL) - printbuf_strappend(pb, "null"); - else -@@ -1428,7 +1435,7 @@ static int json_object_deep_copy_recursive(struct json_object *src, struct json_ - if (shallow_copy_rc < 1) - { - errno = EINVAL; -- return -1; -+ return -120; - } - assert(*dst != NULL); - -@@ -1442,13 +1449,13 @@ static int json_object_deep_copy_recursive(struct json_object *src, struct json_ - else if (json_object_deep_copy_recursive(iter.val, src, iter.key, -1, &jso, shallow_copy) < 0) - { - json_object_put(jso); -- return -1; -+ return -130; - } - - if (json_object_object_add(*dst, iter.key, jso) < 0) - { - json_object_put(jso); -- return -1; -+ return -140; - } - } - break; -@@ -1464,13 +1471,13 @@ static int json_object_deep_copy_recursive(struct json_object *src, struct json_ - else if (json_object_deep_copy_recursive(jso1, src, NULL, ii, &jso, shallow_copy) < 0) - { - json_object_put(jso); -- return -1; -+ return -150; - } - - if (json_object_array_add(*dst, jso) < 0) - { - json_object_put(jso); -- return -1; -+ return -160; - } - } - break; -@@ -1491,9 +1498,17 @@ int json_object_deep_copy(struct json_object *src, struct json_object **dst, jso - int rc; - - /* Check if arguments are sane ; *dst must not point to a non-NULL object */ -- if (!src || !dst || *dst) { -+ if (!src) { - errno = EINVAL; -- return -1; -+ return -101; -+ } -+ if (!dst) { -+ errno = EINVAL; -+ return -102; -+ } -+ if (*dst) { -+ errno = EINVAL; -+ return -103; - } - - if (shallow_copy == NULL) -@@ -1501,6 +1516,7 @@ int json_object_deep_copy(struct json_object *src, struct json_object **dst, jso - - rc = json_object_deep_copy_recursive(src, NULL, NULL, -1, dst, shallow_copy); - if (rc < 0) { -+ - json_object_put(*dst); - *dst = NULL; - } -diff --git a/printbuf.c b/printbuf.c -index 6c77b5d..3f87f77 100644 ---- a/printbuf.c -+++ b/printbuf.c -@@ -13,6 +13,10 @@ - * (http://www.opensource.org/licenses/mit-license.php) - */ - -+#define PRINTBUF_DEBUG 1 -+ -+#pragma GCC optimize ("O0") -+ - #include "config.h" - - #include -@@ -30,6 +34,8 @@ - #include "snprintf_compat.h" - #include "vasprintf_compat.h" - -+#define PRINTBUF_DEFAULT_SIZE (256) -+ - static int printbuf_extend(struct printbuf *p, int min_size); - - struct printbuf* printbuf_new(void) -@@ -38,9 +44,10 @@ struct printbuf* printbuf_new(void) - - p = (struct printbuf*)calloc(1, sizeof(struct printbuf)); - if(!p) return NULL; -- p->size = 32; -+ p->size = PRINTBUF_DEFAULT_SIZE; - p->bpos = 0; -- if(!(p->buf = (char*)malloc(p->size))) { -+ p->buf = (char*)calloc(1, p->size); -+ if(p->buf == NULL) { - free(p); - return NULL; - } -@@ -59,24 +66,44 @@ struct printbuf* printbuf_new(void) - */ - static int printbuf_extend(struct printbuf *p, int min_size) - { -- char *t; -+#define PRINTBUF_EXTEND_BY_BYTES_MIN (8) -+ char *t = NULL; - int new_size; - -- if (p->size >= min_size) -+ if( -+ (p != NULL) && -+ (p->size >= min_size) -+ ) - return 0; - - new_size = p->size * 2; -- if (new_size < min_size + 8) -- new_size = min_size + 8; -+ -+ if (new_size < (min_size + PRINTBUF_EXTEND_BY_BYTES_MIN)) -+ new_size = min_size + PRINTBUF_EXTEND_BY_BYTES_MIN; -+ - #ifdef PRINTBUF_DEBUG - MC_DEBUG("printbuf_memappend: realloc " - "bpos=%d min_size=%d old_size=%d new_size=%d\n", - p->bpos, min_size, p->size, new_size); - #endif /* PRINTBUF_DEBUG */ -- if(!(t = (char*)realloc(p->buf, new_size))) -+ -+ if( -+ (p != NULL) && -+ (p->buf != NULL) -+ ) -+ { -+ t = (char*)calloc(1, new_size); -+ if (t != NULL) { -+ memcpy(t, p->buf, p->size); -+ } -+ } -+ -+ if(t == NULL) - return -1; -+ - p->size = new_size; - p->buf = t; -+ - return 0; - } - -@@ -116,20 +143,21 @@ int sprintbuf(struct printbuf *p, const char *msg, ...) - { - va_list ap; - char *t; -- int size; -- char buf[128]; -+ long int size; -+#define PRINTBUF_DEFAULT_SIZE_BUF ((PRINTBUF_DEFAULT_SIZE<<2) > +1) -+ char buf[PRINTBUF_DEFAULT_SIZE_BUF]; - - /* user stack buffer first */ - va_start(ap, msg); -- size = vsnprintf(buf, 128, msg, ap); -+ size = (long int)vsnprintf(buf, sizeof(buf), msg, ap); - va_end(ap); - /* if string is greater than stack buffer, then use dynamic string - with vasprintf. Note: some implementation of vsnprintf return -1 - if output is truncated whereas some return the number of bytes that - would have been written - this code handles both cases. */ -- if(size == -1 || size > 127) { -+ if(size == -1 || size > (long int)sizeof(buf)) { - va_start(ap, msg); -- if((size = vasprintf(&t, msg, ap)) < 0) { va_end(ap); return -1; } -+ if((size = (long int)vasprintf(&t, msg, ap)) < 0) { va_end(ap); return -1; } - va_end(ap); - printbuf_memappend(p, t, size); - free(t); -@@ -142,14 +170,22 @@ int sprintbuf(struct printbuf *p, const char *msg, ...) - - void printbuf_reset(struct printbuf *p) - { -- p->buf[0] = '\0'; -- p->bpos = 0; -+ if (p != NULL) -+ { -+ if ( (p->size > 0) && (p->buf != NULL) ) { -+ p->buf[0] = '\0'; -+ } -+ -+ p->bpos = 0; -+ } - } - - void printbuf_free(struct printbuf *p) - { - if(p) { - free(p->buf); -+ p->buf = NULL; - free(p); -+ p = NULL; - } - } -diff --git a/tests/test_printbuf.c b/tests/test_printbuf.c -index 06dd13d..19064b5 100644 ---- a/tests/test_printbuf.c -+++ b/tests/test_printbuf.c -@@ -159,6 +159,42 @@ static void test_sprintbuf(int before_resize) - printf("%s: end test\n", __func__); - } - -+static void test_sprintbuf(int before_resize); -+static void test_sprintbuf(int before_resize) -+{ -+ struct printbuf *pb; -+ -+ printf("%s: starting test\n", __func__); -+ pb = printbuf_new(); -+ printf("Buffer length: %d\n", printbuf_length(pb)); -+ -+ char *data = malloc(before_resize + 1 + 1); -+ memset(data, 'X', before_resize + 1 + 1); -+ data[before_resize + 1] = '\0'; -+ sprintbuf(pb, "%s", data); -+ free(data); -+ printf("sprintbuf to just after resize(%d+1): %d, [%s], strlen(buf)=%d\n", before_resize, printbuf_length(pb), pb->buf, (int)strlen(pb->buf)); -+ -+ printbuf_reset(pb); -+ sprintbuf(pb, "plain"); -+ printf("%d, [%s]\n", printbuf_length(pb), pb->buf); -+ -+ sprintbuf(pb, "%d", 1); -+ printf("%d, [%s]\n", printbuf_length(pb), pb->buf); -+ -+ sprintbuf(pb, "%d", INT_MAX); -+ printf("%d, [%s]\n", printbuf_length(pb), pb->buf); -+ -+ sprintbuf(pb, "%d", INT_MIN); -+ printf("%d, [%s]\n", printbuf_length(pb), pb->buf); -+ -+ sprintbuf(pb, "%s", "%s"); -+ printf("%d, [%s]\n", printbuf_length(pb), pb->buf); -+ -+ printbuf_free(pb); -+ printf("%s: end test\n", __func__); -+} -+ - int main(int argc, char **argv) - { - int before_resize = 0;