pkubat / rpms / cpio

Forked from rpms/cpio 4 years ago
Clone
fe198e6
From: =?UTF-8?q?Ond=C5=99ej=20Va=C5=A1=C3=ADk?= <ovasik@redhat.com>
fe198e6
Date: Mon, 14 Sep 2015 09:47:05 +0200
fe198e6
Subject: [PATCH 5/7] fix segfault with nonexisting file with patternnames
fe198e6
 (#567022)
fe198e6
fe198e6
diff --git a/src/copyin.c b/src/copyin.c
fe198e6
index 12bd27c..183b5b5 100644
fe198e6
--- a/src/copyin.c
fe198e6
+++ b/src/copyin.c
fe198e6
@@ -870,21 +870,24 @@ read_pattern_file ()
fe198e6
 
8f8ac39
   pattern_fp = fopen (pattern_file_name, "r");
8f8ac39
   if (pattern_fp == NULL)
fe198e6
-    open_fatal (pattern_file_name);
8f8ac39
-  while (ds_fgetstr (pattern_fp, &pattern_name, '\n') != NULL)
8f8ac39
-    {
8f8ac39
-      if (new_num_patterns >= max_new_patterns)
8f8ac39
-	{
8f8ac39
-	  max_new_patterns += 1;
8f8ac39
-	  new_save_patterns = (char **)
8f8ac39
-	    xrealloc ((char *) new_save_patterns,
8f8ac39
-		      max_new_patterns * sizeof (char *));
8f8ac39
-	}
8f8ac39
-      new_save_patterns[new_num_patterns] = xstrdup (pattern_name.ds_string);
8f8ac39
-      ++new_num_patterns;
8f8ac39
-    }
8f8ac39
-  if (ferror (pattern_fp) || fclose (pattern_fp) == EOF)
8f8ac39
-    close_error (pattern_file_name);
fe198e6
+    open_error (pattern_file_name);
8f8ac39
+  else
8f8ac39
+  {
8f8ac39
+    while (ds_fgetstr (pattern_fp, &pattern_name, '\n') != NULL)
8f8ac39
+      {
8f8ac39
+        if (new_num_patterns >= max_new_patterns)
8f8ac39
+        {
8f8ac39
+          max_new_patterns += 1;
8f8ac39
+          new_save_patterns = (char **)
8f8ac39
+          xrealloc ((char *) new_save_patterns,
8f8ac39
+            max_new_patterns * sizeof (char *));
8f8ac39
+        }
8f8ac39
+        new_save_patterns[new_num_patterns] = xstrdup (pattern_name.ds_string);
8f8ac39
+        ++new_num_patterns;
8f8ac39
+      }
8f8ac39
+    if (ferror (pattern_fp) || fclose (pattern_fp) == EOF)
8f8ac39
+      close_error (pattern_file_name);
8f8ac39
+  }
8f8ac39
 
8f8ac39
   for (i = 0; i < num_patterns; ++i)
8f8ac39
     new_save_patterns[i] = save_patterns[i];