From afefbb4872f241d5ed84cf18bcdbb4d72d6c97c0 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Thu, 17 Feb 2022 18:10:50 -0800 Subject: [PATCH] main.conf: Fix parsing of mode options This replace the use of g_key_file_get_integer, which is limited to only decimal values, to g_key_file_get_string and then use strtol to convert the string value to integer. Fixes: https://github.com/bluez/bluez/issues/293 --- src/main.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main.c b/src/main.c index bf9d398e4..a448320c1 100644 --- a/src/main.c +++ b/src/main.c @@ -354,13 +354,22 @@ static void parse_mode_config(GKeyFile *config, const char *group, for (i = 0; i < params_len; ++i) { GError *err = NULL; - int val = g_key_file_get_integer(config, group, - params[i].val_name, &err); + char *str; + + str = g_key_file_get_string(config, group, params[i].val_name, + &err); if (err) { DBG("%s", err->message); g_clear_error(&err); } else { - info("%s=%d", params[i].val_name, val); + char *endptr = NULL; + int val; + + val = strtol(str, &endptr, 0); + if (!endptr || *endptr != '\0') + continue; + + info("%s=%s(%d)", params[i].val_name, str, val); val = MAX(val, params[i].min); val = MIN(val, params[i].max); -- 2.47.3