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