]> granicus.if.org Git - icu/commitdiff
ICU-9326 Fix potential icupkg tool trap in Windows static build
authorMichael Ow <mow@svn.icu-project.org>
Thu, 17 May 2012 20:09:47 +0000 (20:09 +0000)
committerMichael Ow <mow@svn.icu-project.org>
Thu, 17 May 2012 20:09:47 +0000 (20:09 +0000)
X-SVN-Rev: 31830

icu4c/source/tools/icupkg/icupkg.cpp

index 8001ec2ae93fb29345e1c40d514c99134bb60bdc..2004885cd5ea461fae44cefa25901f3c3b4f544d 100644 (file)
@@ -371,8 +371,12 @@ main(int argc, char *argv[]) {
 
     /* remove items */
     if(options[OPT_REMOVE_LIST].doesOccur) {
-        listPkg=readList(NULL, options[OPT_REMOVE_LIST].value, FALSE);
-        if(listPkg!=NULL) {
+        listPkg=new Package();
+        if(listPkg==NULL) {
+            fprintf(stderr, "icupkg: not enough memory\n");
+            exit(U_MEMORY_ALLOCATION_ERROR);
+        }
+        if(!readList(NULL, options[OPT_REMOVE_LIST].value, FALSE, listPkg)) {
             pkg->removeItems(*listPkg);
             delete listPkg;
             isModified=TRUE;
@@ -389,8 +393,12 @@ main(int argc, char *argv[]) {
      */
     addListPkg=NULL;
     if(options[OPT_ADD_LIST].doesOccur) {
-        addListPkg=readList(sourcePath, options[OPT_ADD_LIST].value, TRUE);
-        if(addListPkg!=NULL) {
+        addListPkg=new Package();
+        if(addListPkg==NULL) {
+            fprintf(stderr, "icupkg: not enough memory\n");
+            exit(U_MEMORY_ALLOCATION_ERROR);
+        }
+        if(!readList(sourcePath, options[OPT_ADD_LIST].value, TRUE, addListPkg)) {
             pkg->addItems(*addListPkg);
             // delete addListPkg; deferred until after writePackage()
             isModified=TRUE;