aboutsummaryrefslogtreecommitdiff
path: root/src/load.c
diff options
context:
space:
mode:
authorAndrea Marchesini <baku@ippolita.net>2011-11-11 19:17:50 +0100
committerPetri Lehtinen <petri@digip.org>2011-11-14 20:57:41 +0200
commit5ec101ec21d5fec71dcf693e941c90c388430a32 (patch)
treed33937fb8bdb064b4efd3ef628fa749bf14c29ba /src/load.c
parent72cd84b92af29360813a1678f0b9294d60da50f1 (diff)
downloadjansson-5ec101ec21d5fec71dcf693e941c90c388430a32.zip
jansson-5ec101ec21d5fec71dcf693e941c90c388430a32.tar.gz
jansson-5ec101ec21d5fec71dcf693e941c90c388430a32.tar.bz2
json_load* return NULL if the first argument is NULL
Diffstat (limited to 'src/load.c')
-rw-r--r--src/load.c33
1 files changed, 28 insertions, 5 deletions
diff --git a/src/load.c b/src/load.c
index d60a93e..3fdec8f 100644
--- a/src/load.c
+++ b/src/load.c
@@ -867,13 +867,19 @@ json_t *json_loads(const char *string, size_t flags, json_error_t *error)
json_t *result;
string_data_t stream_data;
+ jsonp_error_init(error, "<string>");
+
+ if (string == NULL) {
+ error_set(error, NULL, "wrong arguments");
+ return NULL;
+ }
+
stream_data.data = string;
stream_data.pos = 0;
if(lex_init(&lex, string_get, (void *)&stream_data))
return NULL;
- jsonp_error_init(error, "<string>");
result = parse_json(&lex, flags, error);
lex_close(&lex);
@@ -905,6 +911,13 @@ json_t *json_loadb(const char *buffer, size_t buflen, size_t flags, json_error_t
json_t *result;
buffer_data_t stream_data;
+ jsonp_error_init(error, "<buffer>");
+
+ if (buffer == NULL) {
+ error_set(error, NULL, "wrong arguments");
+ return NULL;
+ }
+
stream_data.data = buffer;
stream_data.pos = 0;
stream_data.len = buflen;
@@ -912,7 +925,6 @@ json_t *json_loadb(const char *buffer, size_t buflen, size_t flags, json_error_t
if(lex_init(&lex, buffer_get, (void *)&stream_data))
return NULL;
- jsonp_error_init(error, "<buffer>");
result = parse_json(&lex, flags, error);
lex_close(&lex);
@@ -925,15 +937,21 @@ json_t *json_loadf(FILE *input, size_t flags, json_error_t *error)
const char *source;
json_t *result;
- if(lex_init(&lex, (get_func)fgetc, input))
- return NULL;
-
if(input == stdin)
source = "<stdin>";
else
source = "<stream>";
jsonp_error_init(error, source);
+
+ if (input == NULL) {
+ error_set(error, NULL, "wrong arguments");
+ return NULL;
+ }
+
+ if(lex_init(&lex, (get_func)fgetc, input))
+ return NULL;
+
result = parse_json(&lex, flags, error);
lex_close(&lex);
@@ -947,6 +965,11 @@ json_t *json_load_file(const char *path, size_t flags, json_error_t *error)
jsonp_error_init(error, path);
+ if (path == NULL) {
+ error_set(error, NULL, "wrong arguments");
+ return NULL;
+ }
+
fp = fopen(path, "rb");
if(!fp)
{