From f63ea1ab3a1eb5ed3489eb5648224909cc0c916e Mon Sep 17 00:00:00 2001 From: Stefan Kangas Date: Tue, 16 Jul 2024 04:34:53 +0200 Subject: [PATCH] Use strnlen to avoid unnecessary work in pgtkfns.c * src/pgtkfns.c (pgtk_get_defaults_value, pgtk_set_defaults_value): Factor out new function... (pgtk_check_resource_key_length): ...to here. Avoid unnecessary work by using strnlen. (cherry picked from commit d00a10333f06d30fee93ba3ee033e74dc4ff85bc) --- src/pgtkfns.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/pgtkfns.c b/src/pgtkfns.c index ffa2d8e62d2..2060a9ec246 100644 --- a/src/pgtkfns.c +++ b/src/pgtkfns.c @@ -1901,13 +1901,19 @@ parse_resource_key (const char *res_key, char *setting_key) return gs; } +static void +pgtk_check_resource_key_length (const char *key) +{ + if (strnlen (key, RESOURCE_KEY_MAX_LEN) >= RESOURCE_KEY_MAX_LEN) + error ("Resource key too long"); +} + const char * pgtk_get_defaults_value (const char *key) { char skey[(RESOURCE_KEY_MAX_LEN + 1) * 2]; - if (strlen (key) >= RESOURCE_KEY_MAX_LEN) - error ("Resource key too long"); + pgtk_check_resource_key_length (key); GSettings *gs = parse_resource_key (key, skey); if (gs == NULL) @@ -1936,8 +1942,7 @@ pgtk_set_defaults_value (const char *key, const char *value) { char skey[(RESOURCE_KEY_MAX_LEN + 1) * 2]; - if (strlen (key) >= RESOURCE_KEY_MAX_LEN) - error ("Resource key too long"); + pgtk_check_resource_key_length (key); GSettings *gs = parse_resource_key (key, skey); if (gs == NULL) -- 2.39.5