caa7bd
diff -urN icu.old/source/common/uloc_keytype.cpp icu/source/common/uloc_keytype.cpp
caa7bd
--- icu.old/source/common/uloc_keytype.cpp	2017-02-01 01:21:30.000000000 +0530
caa7bd
+++ icu/source/common/uloc_keytype.cpp	2018-09-23 18:48:04.414990551 +0530
caa7bd
@@ -383,6 +383,7 @@
caa7bd
         LocExtKeyData* keyData = (LocExtKeyData*)uprv_malloc(sizeof(LocExtKeyData));
caa7bd
         if (keyData == NULL) {
caa7bd
             sts = U_MEMORY_ALLOCATION_ERROR;
caa7bd
+	    uprv_free(typeDataMap);
caa7bd
             break;
caa7bd
         }
caa7bd
         keyData->bcpId = bcpKeyId;
caa7bd
diff -urN icu.old/source/common/uloc_tag.cpp icu/source/common/uloc_tag.cpp
caa7bd
--- icu.old/source/common/uloc_tag.cpp	2017-10-11 21:54:34.000000000 +0530
caa7bd
+++ icu/source/common/uloc_tag.cpp	2018-09-23 18:48:58.207182317 +0530
caa7bd
@@ -2145,6 +2145,7 @@
caa7bd
 
caa7bd
 error:
caa7bd
     ultag_close(t);
caa7bd
+    uprv_free(pExtension);
caa7bd
     return NULL;
caa7bd
 }
caa7bd
 
caa7bd
diff -urN icu.old/source/i18n/olsontz.cpp icu/source/i18n/olsontz.cpp
caa7bd
--- icu.old/source/i18n/olsontz.cpp	2017-02-01 01:21:27.000000000 +0530
caa7bd
+++ icu/source/i18n/olsontz.cpp	2018-09-23 18:52:02.140418739 +0530
caa7bd
@@ -787,6 +787,7 @@
caa7bd
                     if (historicRules[typeIdx] == NULL) {
caa7bd
                         status = U_MEMORY_ALLOCATION_ERROR;
caa7bd
                         deleteTransitionRules();
caa7bd
+			uprv_free(times);
caa7bd
                         return;
caa7bd
                     }
caa7bd
                 }
caa7bd
diff -urN icu.old/source/i18n/rbt_pars.cpp icu/source/i18n/rbt_pars.cpp
caa7bd
--- icu.old/source/i18n/rbt_pars.cpp	2017-02-01 01:21:27.000000000 +0530
caa7bd
+++ icu/source/i18n/rbt_pars.cpp	2018-09-23 18:52:51.362679180 +0530
caa7bd
@@ -557,6 +557,7 @@
caa7bd
                 // The next character MUST be a segment open
caa7bd
                 if (single == NULL ||
caa7bd
                     !ICU_Utility::parseChar(rule, iref, SEGMENT_OPEN)) {
caa7bd
+		     uprv_free(single);
caa7bd
                     return syntaxError(U_INVALID_FUNCTION, rule, start, status);
caa7bd
                 }
caa7bd
                 
caa7bd
diff -urN icu.old/source/i18n/tznames_impl.cpp icu/source/i18n/tznames_impl.cpp
caa7bd
--- icu.old/source/i18n/tznames_impl.cpp	2017-10-11 21:54:34.000000000 +0530
caa7bd
+++ icu/source/i18n/tznames_impl.cpp	2018-09-23 18:55:36.222152997 +0530
caa7bd
@@ -1762,6 +1762,7 @@
caa7bd
     UResourceBundle* rbTable = NULL;
caa7bd
     rbTable = ures_getByKey(rb, key, rbTable, &status);
caa7bd
     if (U_FAILURE(status)) {
caa7bd
+	uprv_free(rbTable);
caa7bd
         return NULL;
caa7bd
     }
caa7bd
 
caa7bd
@@ -1784,6 +1785,7 @@
caa7bd
         if (names != NULL) {
caa7bd
             uprv_free(names);
caa7bd
         }
caa7bd
+	uprv_free(rbTable);
caa7bd
         return NULL;
caa7bd
     }
caa7bd
 
caa7bd
diff -urN icu.old/source/i18n/usearch.cpp icu/source/i18n/usearch.cpp
caa7bd
--- icu.old/source/i18n/usearch.cpp	2017-02-01 01:21:27.000000000 +0530
caa7bd
+++ icu/source/i18n/usearch.cpp	2018-09-23 18:54:34.752103865 +0530
caa7bd
@@ -222,6 +222,7 @@
caa7bd
         int32_t *temp = (int32_t *)allocateMemory(
caa7bd
                                          sizeof(int32_t) * newlength, status);
caa7bd
         if (U_FAILURE(*status)) {
caa7bd
+            uprv_free(temp);
caa7bd
             return NULL;
caa7bd
         }
caa7bd
         uprv_memcpy(temp, destination, sizeof(int32_t) * (size_t)offset);
caa7bd
@@ -263,6 +264,7 @@
caa7bd
                                          sizeof(int64_t) * newlength, status);
caa7bd
 
caa7bd
         if (U_FAILURE(*status)) {
caa7bd
+		uprv_free(temp);
caa7bd
             return NULL;
caa7bd
         }
caa7bd
 
caa7bd
diff -urN icu.old/source/tools/ctestfw/ctest.c icu/source/tools/ctestfw/ctest.c
caa7bd
--- icu.old/source/tools/ctestfw/ctest.c	2017-02-01 01:21:30.000000000 +0530
caa7bd
+++ icu/source/tools/ctestfw/ctest.c	2018-09-23 18:19:43.612734248 +0530
caa7bd
@@ -803,6 +803,7 @@
caa7bd
     }
caa7bd
     va_start(ap, pattern);
caa7bd
     vlog_err(NULL, pattern, ap);
caa7bd
+    va_end(ap);
caa7bd
 }
caa7bd
 
caa7bd
 UBool T_CTEST_EXPORT2
caa7bd
@@ -810,6 +811,7 @@
caa7bd
   va_list ap;
caa7bd
   va_start(ap, pattern);
caa7bd
   return vlog_knownIssue(ticket, pattern, ap);
caa7bd
+  va_end(ap);
caa7bd
 }
caa7bd
 
caa7bd
 void T_CTEST_EXPORT2
caa7bd
@@ -843,6 +845,7 @@
caa7bd
         }
caa7bd
         vlog_err(NULL, pattern, ap); /* no need for prefix in default case */
caa7bd
     }
caa7bd
+    va_end(ap);
caa7bd
 }
caa7bd
 
caa7bd
 void T_CTEST_EXPORT2
caa7bd
@@ -852,6 +855,7 @@
caa7bd
 
caa7bd
     va_start(ap, pattern);
caa7bd
     vlog_info(NULL, pattern, ap);
caa7bd
+    va_end(ap);
caa7bd
 }
caa7bd
 
caa7bd
 void T_CTEST_EXPORT2
caa7bd
@@ -861,6 +865,7 @@
caa7bd
 
caa7bd
     va_start(ap, pattern);
caa7bd
     vlog_verbose(NULL, pattern, ap);
caa7bd
+    va_end(ap);
caa7bd
 }
caa7bd
 
caa7bd
 
caa7bd
@@ -882,6 +887,7 @@
caa7bd
     } else {
caa7bd
         vlog_info("[DATA] ", pattern, ap); 
caa7bd
     }
caa7bd
+    va_end(ap);
caa7bd
 }
caa7bd
 
caa7bd
 
caa7bd
diff -urN icu.old/source/tools/gensprep/store.c icu/source/tools/gensprep/store.c
caa7bd
--- icu.old/source/tools/gensprep/store.c	2017-02-08 00:27:35.000000000 +0530
caa7bd
+++ icu/source/tools/gensprep/store.c	2018-09-23 17:42:52.262908882 +0530
caa7bd
@@ -634,7 +634,6 @@
caa7bd
 cleanUpData(void) {
caa7bd
     uprv_free(mappingData);
caa7bd
     utrie_close(sprepTrie);
caa7bd
-    uprv_free(sprepTrie);
caa7bd
 }
caa7bd
 
caa7bd
 #endif /* #if !UCONFIG_NO_IDNA */
caa7bd
diff -urN icu.old/source/tools/pkgdata/pkgdata.cpp icu/source/tools/pkgdata/pkgdata.cpp
caa7bd
--- icu.old/source/tools/pkgdata/pkgdata.cpp	2017-03-23 04:56:34.000000000 +0530
caa7bd
+++ icu/source/tools/pkgdata/pkgdata.cpp	2018-09-23 17:40:19.730240502 +0530
caa7bd
@@ -1531,11 +1531,11 @@
caa7bd
             gencFilePath);
caa7bd
 
caa7bd
     result = runCommand(cmd);
caa7bd
-    uprv_free(cmd);
caa7bd
     if (result != 0) {
caa7bd
         fprintf(stderr, "Error creating with assembly code. Failed command: %s\n", cmd);
caa7bd
         return result;
caa7bd
     }
caa7bd
+    uprv_free(cmd);
caa7bd
 
caa7bd
     return pkg_generateLibraryFile(targetDir, mode, tempObjectFile);
caa7bd
 }
caa7bd
diff -urN icu.old/source/tools/toolutil/filetools.cpp icu/source/tools/toolutil/filetools.cpp
caa7bd
--- icu.old/source/tools/toolutil/filetools.cpp	2017-02-01 01:21:30.000000000 +0530
caa7bd
+++ icu/source/tools/toolutil/filetools.cpp	2018-09-23 16:09:47.949491516 +0530
caa7bd
@@ -64,6 +64,7 @@
caa7bd
                     newpath.append(dirEntry->d_name, -1, status);
caa7bd
                     if (U_FAILURE(status)) {
caa7bd
                         fprintf(stderr, "%s:%d: %s\n", __FILE__, __LINE__, u_errorName(status));
caa7bd
+			free(pDir);
caa7bd
                         return FALSE;
caa7bd
                     };
caa7bd