From bde669d883d11e83b5116e96974bfc5f0159840d Mon Sep 17 00:00:00 2001 From: Hiroshi Hatake Date: Mon, 19 Jan 2026 18:31:57 +0900 Subject: [PATCH] filter_geoip2: allow nested lookup paths beyond depth 2 geoip2 filter limited lookup path splitting to depth 2, which caused nested paths like 'subdivisions.0.names.en' to be truncated and fail at runtime. This change allows unlimited nesting by using flb_utils_split(..., 4), making array-backed fields such as subdivisions accessible. So, we need to accept subdivitions elements. For example, the following configuration could be broken on loading because of containing three dots or more. Signed-off-by: Hiroshi Hatake --- plugins/filter_geoip2/geoip2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/filter_geoip2/geoip2.c b/plugins/filter_geoip2/geoip2.c index 7ed39f4ca1d..fd20782124c 100644 --- a/plugins/filter_geoip2/geoip2.c +++ b/plugins/filter_geoip2/geoip2.c @@ -240,7 +240,7 @@ static void add_geoip_fields(msgpack_object *map, pos = strstr(record->val, "}"); memset(key, '\0', sizeof(key)); strncpy(key, record->val + 2, pos - (record->val + 2)); - split = flb_utils_split(key, '.', 2); + split = flb_utils_split(key, '.', 8); split_size = mk_list_size(split); path = flb_malloc(sizeof(char *) * (split_size + 1)); i = 0;