diff options
author | Andrea Marchesini <baku@ippolita.net> | 2011-11-11 19:17:50 +0100 |
---|---|---|
committer | Petri Lehtinen <petri@digip.org> | 2011-11-14 20:57:41 +0200 |
commit | 5ec101ec21d5fec71dcf693e941c90c388430a32 (patch) | |
tree | d33937fb8bdb064b4efd3ef628fa749bf14c29ba /src/load.c | |
parent | 72cd84b92af29360813a1678f0b9294d60da50f1 (diff) | |
download | jansson-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.c | 33 |
1 files changed, 28 insertions, 5 deletions
@@ -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) { |