aboutsummaryrefslogtreecommitdiffstats
path: root/wsutil
diff options
context:
space:
mode:
authorDario Lombardo <lomato@gmail.com>2018-04-20 14:04:50 +0200
committerAnders Broman <a.broman58@gmail.com>2018-04-24 03:46:41 +0000
commit73a1e98f4edbd9596e084e269bc050f17906531a (patch)
tree732e847b95150a527b58601ee2f95e6b304885fd /wsutil
parent631fec3e1bdb069466da95ebfc0f0b3de5706415 (diff)
wsutil: use json-glib instead of jsmn if present.
Change-Id: I61b0fc2c23ad08aba3e29471bdfef6cab682bb21 Reviewed-on: https://code.wireshark.org/review/27056 Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'wsutil')
-rw-r--r--wsutil/CMakeLists.txt5
-rw-r--r--wsutil/wsjson.c15
2 files changed, 18 insertions, 2 deletions
diff --git a/wsutil/CMakeLists.txt b/wsutil/CMakeLists.txt
index 7ee405a334..f3e000f28b 100644
--- a/wsutil/CMakeLists.txt
+++ b/wsutil/CMakeLists.txt
@@ -227,6 +227,11 @@ set(wsutil_LIBS
${WIN_WSOCK32_LIBRARY}
${GNUTLS_LIBRARIES}
)
+
+IF(HAVE_JSONGLIB)
+ list(APPEND wsutil_LIBS ${JSONGLIB_LIBRARIES})
+ENDIF()
+
IF(WIN32)
set(wsutil_LIBS ${wsutil_LIBS} "iphlpapi.lib" "ws2_32.lib")
ENDIF(WIN32)
diff --git a/wsutil/wsjson.c b/wsutil/wsjson.c
index 7c0dafd19c..7d5c442ecd 100644
--- a/wsutil/wsjson.c
+++ b/wsutil/wsjson.c
@@ -10,6 +10,8 @@
* SPDX-License-Identifier: GPL-2.0-or-later
*/
+#include "config.h"
+
#include "wsjson.h"
#include <string.h>
@@ -18,13 +20,22 @@
#include <wsutil/unicode-utils.h>
#include "log.h"
+#ifdef HAVE_JSONGLIB
+#include <json-glib/json-glib.h>
+#endif
+
gboolean wsjson_is_valid_json(const guint8* buf, const size_t len)
{
+ gboolean ret = TRUE;
+#ifdef HAVE_JSONGLIB
+ JsonParser *parser = json_parser_new();
+ GError* error;
+ ret = json_parser_load_from_data(parser, buf, len, &error);
+#else
/* We expect no more than 1024 tokens */
guint max_tokens = 1024;
jsmntok_t* t;
jsmn_parser p;
- gboolean ret = TRUE;
int rcode;
t = g_new0(jsmntok_t, max_tokens);
@@ -54,7 +65,7 @@ gboolean wsjson_is_valid_json(const guint8* buf, const size_t len)
}
g_free(t);
-
+#endif
return ret;
}