From 086cdc93ba72dd68e1f996785c41e5a7c60ff6a3 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 Signed-off-by: Manika Shrivastava Signed-off-by: Ayush Garg --- src/main.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main.c b/src/main.c index 12c84be..01ebd6b 100755 --- a/src/main.c +++ b/src/main.c @@ -359,13 +359,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.7.4