Adjust codebase for iniparser upgrade (4.x) 83/222083/4 accepted/tizen/unified/20200213.121620 submit/tizen/20200203.003549 submit/tizen/20200205.003954
authorKarol Lewandowski <k.lewandowsk@samsung.com>
Thu, 9 Jan 2020 11:04:09 +0000 (12:04 +0100)
committerKarol Lewandowski <k.lewandowsk@samsung.com>
Thu, 9 Jan 2020 15:14:46 +0000 (16:14 +0100)
Change-Id: I242b62f5dade32085eafa050e208d52edcd40b7b

src/util/peripheral_board.c

index d2f58200a8aabeea794700d17fe09c1f8b16499c..c3eafae4d40bb68f194e26aa40f7a7e3f2206264 100644 (file)
@@ -48,7 +48,7 @@ static const pb_board_type_s pb_board_type[] = {
        {PB_BOARD_UNKNOWN,  "unknown board",   BOARD_INI_UNKNOWN_PATH},
 };
 
-static int peripheral_bus_board_get_device_type(char *string)
+static int peripheral_bus_board_get_device_type(const char *string)
 {
        if (0 == strncmp(string, "gpio", strlen("gpio")))
                return PB_BOARD_DEV_GPIO;
@@ -66,7 +66,7 @@ static int peripheral_bus_board_get_device_type(char *string)
        return -1;
 }
 
-static void peripheral_bus_board_ini_parse_key(pb_board_dev_e type, char *string, unsigned int *args)
+static void peripheral_bus_board_ini_parse_key(pb_board_dev_e type, const char *string, unsigned int *args)
 {
        switch (type) {
        case PB_BOARD_DEV_GPIO:
@@ -92,15 +92,20 @@ static void peripheral_bus_board_ini_parse_key(pb_board_dev_e type, char *string
        }
 }
 
-static int peripheral_bus_board_ini_parse_pins(char *string, unsigned int *pins)
+static int peripheral_bus_board_ini_parse_pins(const char *string, unsigned int *pins)
 {
        const char delimiter[] = ", ";
        int cnt_pins = 0;
        char *token, *ptr = NULL;
 
-       if (string == NULL) return 0;
+       if (string == NULL)
+               return 0;
 
-       token = strtok_r(string, delimiter, &ptr);
+       int len = strlen(string) + 1;
+       char str[len];
+       memcpy(str, string, len);
+
+       token = strtok_r(str, delimiter, &ptr);
        while (token) {
                if (cnt_pins >= BOARD_PINS_MAX) break;
 
@@ -114,7 +119,7 @@ static int peripheral_bus_board_ini_parse_pins(char *string, unsigned int *pins)
 static int peripheral_bus_board_ini_get_nkeys(dictionary *dict)
 {
        int i, sec_num, key_num, ret = 0;
-       char *section;
+       const char *section;
 
        sec_num = iniparser_getnsec(dict);
        for (i = 0; i < sec_num; i++) {
@@ -203,8 +208,7 @@ static pb_board_s *peripheral_bus_board_get_info()
 
        sec_num = iniparser_getnsec(dict);
        for (i = 0; i < sec_num; i++) {
-               char *section, *key_str;
-               char **key_list = NULL;
+               const char *section, *key_str;
 
                section = iniparser_getsecname(dict, i);
                ret = peripheral_bus_board_get_device_type(section);
@@ -212,11 +216,20 @@ static pb_board_s *peripheral_bus_board_get_info()
                        continue;
 
                enum_dev = (pb_board_dev_e)ret;
-               key_list = iniparser_getseckeys(dict, section);
                key_num = iniparser_getsecnkeys(dict, section);
                if (key_num <= 0)
                        continue;
 
+               const char **key_list_mem = malloc(key_num * sizeof(char *));
+               if (!key_list_mem)
+                       goto err_get_nkeys;
+
+               const char **key_list = iniparser_getseckeys(dict, section, key_list_mem);
+               if (!key_list) {
+                       free(key_list_mem);
+                       goto err_get_nkeys;
+               }
+
                for (j = 0; j < key_num; j++) {
                        dev = &board->dev[cnt_key];
                        dev->dev_type = enum_dev;
@@ -225,6 +238,8 @@ static pb_board_s *peripheral_bus_board_get_info()
                        dev->num_pins = peripheral_bus_board_ini_parse_pins(key_str, dev->pins);
                        cnt_key++;
                }
+
+               free(key_list);
        }
 
        iniparser_freedict(dict);