Fix svace warnings 94/169694/3
authorHyunjee Kim <hj0426.kim@samsung.com>
Thu, 8 Feb 2018 08:52:46 +0000 (17:52 +0900)
committerHyunjee Kim <hj0426.kim@samsung.com>
Fri, 9 Feb 2018 02:33:10 +0000 (11:33 +0900)
* MEMORY_LEAK
* INTEGER_OVERFLOW
* UNREACHABLE_CODE

Change-Id: Ic2a5f8c2bb6621da2203ad3913b21ebb05bf6424
Signed-off-by: Hyunjee Kim <hj0426.kim@samsung.com>
i18ninfo/i18ninfo.cpp

index 712de6b..b48b3e3 100644 (file)
@@ -32,6 +32,11 @@ static int ASCIIDOC_FLAG = 0;
 
 #define PRINT_ASCIIDOC_LOG(fmt) if (ASCIIDOC_FLAG) printf(fmt)
 
+#define INT_ADD_RANGE_OVERFLOW(a, b) \
+       ((b) < 0                          \
+        ? (a) < INT_MIN - (b)         \
+        : INT_MAX - (b) < (a))
+
 
 const char *default_locale = I18N_ULOCALE_UK;
 
@@ -446,6 +451,13 @@ static int __get_date_basic_format()
        }
        PRINT_ASCIIDOC_LOG("|===\n");
 
+       free(f_narrow);
+       free(f_short);
+       free(f_long);
+       free(s_narrow);
+       free(s_short);
+       free(s_long);
+
        return 0;
 }
 
@@ -1086,14 +1098,17 @@ i18n_uchar *_convert_unicode_numeric_values(const i18n_uchar *input, int32_t len
                        int value_length = snprintf(NULL, 0, "%g", value);
                        if (value_length > max_value_length)
                                max_value_length = value_length;
-                       output_length += value_length;
+                       if (!INT_ADD_RANGE_OVERFLOW(output_length, value_length))
+                               output_length += value_length;
                } else {
-                       output_length += 1;
+                       if (!INT_ADD_RANGE_OVERFLOW(output_length, 1))
+                               output_length += 1;
                }
        }
 
        /* +1 NULL terminator */
-       max_value_length += 1;
+       if (!INT_ADD_RANGE_OVERFLOW(max_value_length, 1))
+               max_value_length += 1;
 
        i18n_uchar *output = (i18n_uchar *) malloc((output_length + 1) * sizeof(input[0]));
        i18n_ustring_mem_set(output, '\0', output_length + 1);
@@ -1453,9 +1468,9 @@ void showLangInfo(char *locale)
                        printf("\n****************************************");
                        printf("\n - locales : %s\n", default_locale);
                        ret = __get_language_info();
-               }
-               if (ret == -1) {
-                       printf("get i18n language info list failed\n");
+                       if (ret == -1) {
+                               printf("get i18n language info list failed\n");
+                       }
                }
        } else {
                default_locale = locale;
@@ -1540,9 +1555,9 @@ void showDatentimeFormat(char *locale)
                        printf("\n****************************************");
                        printf("\n - locales : %s\n", default_locale);
                        ret = __get_date_basic_format();
-               }
-               if (ret == -1) {
-                       printf("get i18n date and time basic format list failed\n");
+                       if (ret == -1) {
+                               printf("get i18n date and time basic format list failed\n");
+                       }
                }
        } else {
                default_locale = locale;
@@ -1569,9 +1584,9 @@ void testDatentime(char *input, char *locale)
                        printf("\n****************************************");
                        printf("\n - locales : %s\n", default_locale);
                        ret = __get_date_and_time(input);
-               }
-               if (ret == -1) {
-                       printf("get i18n date and time list failed\n");
+                       if (ret == -1) {
+                               printf("get i18n date and time list failed\n");
+                       }
                }
        } else {
                default_locale = locale;
@@ -1600,9 +1615,9 @@ void testNumberFormat(char *input, char *locale)
                                printf("\n****************************************");
                                printf("\n - locales : %s\n", default_locale);
                                ret = __get_number_format(input);
-                       }
-                       if (ret == -1) {
-                               printf("get number format list failed\n");
+                               if (ret == -1) {
+                                       printf("get number format list failed\n");
+                               }
                        }
                } else {
                        default_locale = locale;
@@ -1630,9 +1645,9 @@ void testNumberSymbol(char *locale)
                        printf("\n****************************************");
                        printf("\n - locales : %s\n", default_locale);
                        ret = __get_symbol();
-               }
-               if (ret == -1) {
-                       printf("get i18n symbol list failed\n");
+                       if (ret == -1) {
+                               printf("get i18n symbol list failed\n");
+                       }
                }
        } else {
                default_locale = locale;