From 878ee963b5929587948228f5556bee8d89a0f1d0 Mon Sep 17 00:00:00 2001 From: synt-xerror <169557594+synt-xerror@users.noreply.github.com> Date: Mon, 16 Feb 2026 21:37:20 -0300 Subject: [PATCH] Fix: segfault error at info function --- src/libneocities.a | Bin 0 -> 17528 bytes src/neocities.c | 43 +++++++++++++++++++++++++++++++------------ src/neocities.o | Bin 0 -> 17640 bytes 3 files changed, 31 insertions(+), 12 deletions(-) create mode 100644 src/libneocities.a create mode 100644 src/neocities.o diff --git a/src/libneocities.a b/src/libneocities.a new file mode 100644 index 0000000000000000000000000000000000000000..d73f4a9fe11b422d1c901842d4cb2d6302bdc619 GIT binary patch literal 17528 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 KMU}tiz4~uXq$@-K literal 0 HcmV?d00001 diff --git a/src/neocities.c b/src/neocities.c index 5003a1f..b7d813c 100644 --- a/src/neocities.c +++ b/src/neocities.c @@ -151,19 +151,38 @@ int neocities_info( const char *result = json_string_value(json_object_get(root,"result")); if (!result || strcmp(result,"success")!=0) { json_decref(root); return 4; } - json_t *info = json_object_get(root,"info"); - out->sitename = strdup(json_string_value(json_object_get(info,"sitename"))); - out->hits = (int)json_integer_value(json_object_get(info,"hits")); - out->created_at = strdup(json_string_value(json_object_get(info,"created_at"))); - out->last_updated= strdup(json_string_value(json_object_get(info,"last_updated"))); - out->domain = strdup(json_string_value(json_object_get(info,"domain"))); - + json_t *info = json_object_get(root,"info"); + if (!json_is_object(info)) { + json_decref(root); + return 4; + } + + json_t *j_sitename = json_object_get(info,"sitename"); + json_t *j_created = json_object_get(info,"created_at"); + json_t *j_updated = json_object_get(info,"last_updated"); + json_t *j_domain = json_object_get(info,"domain"); + json_t *j_hits = json_object_get(info,"hits"); + + out->sitename = json_is_string(j_sitename) ? strdup(json_string_value(j_sitename)) : NULL; + out->created_at = json_is_string(j_created) ? strdup(json_string_value(j_created)) : NULL; + out->last_updated = json_is_string(j_updated) ? strdup(json_string_value(j_updated)) : NULL; + out->domain = json_is_string(j_domain) ? strdup(json_string_value(j_domain)) : NULL; + out->hits = json_is_integer(j_hits) ? json_integer_value(j_hits) : 0; + json_t *tags = json_object_get(info,"tags"); - size_t tc = json_array_size(tags); - out->tags = malloc(sizeof(char*) * tc); - out->tag_count = tc; - for (size_t i=0; itags[i] = strdup(json_string_value(json_array_get(tags,i))); + if (!json_is_array(tags)) { + out->tags = NULL; + out->tag_count = 0; + } else { + size_t tc = json_array_size(tags); + out->tags = malloc(sizeof(char*) * tc); + out->tag_count = tc; + + for (size_t i=0; itags[i] = json_is_string(tag) ? strdup(json_string_value(tag)) : NULL; + } + } json_decref(root); return 0; diff --git a/src/neocities.o b/src/neocities.o new file mode 100644 index 0000000000000000000000000000000000000000..aed96ad7486e93ef7013fcac2735dfc7772c3a06 GIT binary patch literal 17640 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 DfMKmf literal 0 HcmV?d00001