diff options
author | Will Thompson <wjt@endlessos.org> | 2022-08-06 20:49:54 +0100 |
---|---|---|
committer | Will Thompson <wjt@endlessos.org> | 2022-08-06 20:49:54 +0100 |
commit | 1743789f6dfe7dd69bac345ee2a5e23a2f98279b (patch) | |
tree | d7ea41b65fe2175b2ffa16160ecefeb788840e21 | |
parent | 72285d203963c118a05f810016b584210663ae80 (diff) | |
download | geocode-glib-1743789f6dfe7dd69bac345ee2a5e23a2f98279b.tar.gz |
nominatim: Validate response as UTF-8
Previously, the bytes read from the server's response were assumed to be
valid UTF-8. Particularly since we are copying it anyway, validate it
at the same time.
(In practice this is probably a non-issue because it just ends up
getting passed to json_parser_load_from_data() which validates its input
as UTF-8 anyway.)
-rw-r--r-- | geocode-glib/geocode-nominatim.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/geocode-glib/geocode-nominatim.c b/geocode-glib/geocode-nominatim.c index d18e71f..4f62460 100644 --- a/geocode-glib/geocode-nominatim.c +++ b/geocode-glib/geocode-nominatim.c @@ -910,7 +910,7 @@ on_query_data_loaded (GObject *object, } else { gsize size = 0; gconstpointer data = g_bytes_get_data (body, &size); - gchar *contents = g_strndup (data, size); + gchar *contents = g_utf8_make_valid (data, size); _geocode_glib_cache_save (query, contents); g_task_return_pointer (task, contents, g_free); @@ -933,7 +933,7 @@ on_query_data_loaded (SoupSession *session, "%s", query->reason_phrase ? query->reason_phrase : "Query failed"); else { - contents = g_strndup (query->response_body->data, query->response_body->length); + contents = g_utf8_make_valid (query->response_body->data, query->response_body->length); _geocode_glib_cache_save (query, contents); g_task_return_pointer (task, contents, g_free); } @@ -1074,7 +1074,7 @@ geocode_nominatim_query (GeocodeNominatim *self, } else { gsize size = 0; gconstpointer data = g_bytes_get_data (body, &size); - contents = g_strndup (data, size); + contents = g_utf8_make_valid (data, size); _geocode_glib_cache_save (soup_query, contents); } @@ -1084,7 +1084,7 @@ geocode_nominatim_query (GeocodeNominatim *self, soup_query->reason_phrase ? soup_query->reason_phrase : "Query failed"); contents = NULL; } else { - contents = g_strndup (soup_query->response_body->data, soup_query->response_body->length); + contents = g_utf8_make_valid (soup_query->response_body->data, soup_query->response_body->length); _geocode_glib_cache_save (soup_query, contents); } #endif |