From 3a734d31a82178848fe4ffd33668d5d0fc5467188637a66d7d714d25c21d639d Mon Sep 17 00:00:00 2001 From: Jean Delvare Date: Tue, 3 Jun 2014 08:28:09 +0000 Subject: [PATCH] Accepting request 234823 from home:Andreas_Schwab:Factory - error-report-crash.patch: fix crash after reporting error during option parsing OBS-URL: https://build.opensuse.org/request/show/234823 OBS-URL: https://build.opensuse.org/package/show/devel:tools/patch?expand=0&rev=39 --- error-report-crash.patch | 98 ++++++++++++++++++++++++++++++++++++++++ patch.changes | 6 +++ patch.spec | 4 +- 3 files changed, 107 insertions(+), 1 deletion(-) create mode 100644 error-report-crash.patch diff --git a/error-report-crash.patch b/error-report-crash.patch new file mode 100644 index 0000000..9f5b057 --- /dev/null +++ b/error-report-crash.patch @@ -0,0 +1,98 @@ +From 291ec175812b7ba291d124e4cf2fbf9efec590c8 Mon Sep 17 00:00:00 2001 +From: Andreas Gruenbacher +Date: Thu, 4 Oct 2012 12:33:09 +0200 +Subject: [PATCH] Initialize data structures early enough + +* src/patch.c (main): Initialize data structures early enough, before error +paths can access them. +* tests/bad-usage: Test bad command line usage. +* tests/Makefile.am (TESTS): Add bad-usage here. +--- + src/patch.c | 8 ++++---- + tests/Makefile.am | 1 + + tests/bad-usage | 18 ++++++++++++++++++ + 3 files changed, 23 insertions(+), 4 deletions(-) + create mode 100644 tests/bad-usage + +Index: patch-2.7.1/src/patch.c +=================================================================== +--- patch-2.7.1.orig/src/patch.c ++++ patch-2.7.1/src/patch.c +@@ -150,6 +150,10 @@ main (int argc, char **argv) + else if ((version_control = getenv ("VERSION_CONTROL"))) + version_control_context = "$VERSION_CONTROL"; + ++ init_backup_hash_table (); ++ init_files_to_delete (); ++ init_files_to_output (); ++ + /* parse switches */ + Argc = argc; + Argv = argv; +@@ -162,10 +166,6 @@ main (int argc, char **argv) + if (make_backups | backup_if_mismatch) + backup_type = get_version (version_control_context, version_control); + +- init_backup_hash_table (); +- init_files_to_delete (); +- init_files_to_output (); +- + init_output (&outstate); + if (outfile) + outstate.ofp = open_outfile (outfile); +Index: patch-2.7.1/tests/Makefile.am +=================================================================== +--- patch-2.7.1.orig/tests/Makefile.am ++++ patch-2.7.1/tests/Makefile.am +@@ -20,6 +20,7 @@ TESTS = \ + asymmetric-hunks \ + backup-prefix-suffix \ + bad-filenames \ ++ bad-usage \ + concat-git-diff \ + copy-rename \ + corrupt-reject-files \ +Index: patch-2.7.1/tests/Makefile.in +=================================================================== +--- patch-2.7.1.orig/tests/Makefile.in ++++ patch-2.7.1/tests/Makefile.in +@@ -1075,6 +1075,7 @@ TESTS = \ + asymmetric-hunks \ + backup-prefix-suffix \ + bad-filenames \ ++ bad-usage \ + concat-git-diff \ + copy-rename \ + corrupt-reject-files \ +@@ -1294,6 +1295,8 @@ backup-prefix-suffix.log: backup-prefix- + @p='backup-prefix-suffix'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) + bad-filenames.log: bad-filenames + @p='bad-filenames'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) ++bad-usage.log: bad-usage ++ @p='bad-usage'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) + concat-git-diff.log: concat-git-diff + @p='concat-git-diff'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post) + copy-rename.log: copy-rename +Index: patch-2.7.1/tests/bad-usage +=================================================================== +--- /dev/null ++++ patch-2.7.1/tests/bad-usage +@@ -0,0 +1,18 @@ ++# Copyright (C) 2009, 2011-2012 Free Software Foundation, Inc. ++# ++# Copying and distribution of this file, with or without modification, ++# in any medium, are permitted without royalty provided the copyright ++# notice and this notice are preserved. ++ ++. $srcdir/test-lib.sh ++ ++require_cat ++use_local_patch ++use_tmpdir ++ ++# ============================================================== ++ ++check 'patch -px || echo "status: $?"' <