Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package shim for openSUSE:Factory checked in 
at 2021-03-15 10:53:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/shim (Old)
 and      /work/SRC/openSUSE:Factory/.shim.new.2401 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "shim"

Mon Mar 15 10:53:37 2021 rev:92 rq:878251 version:15+git47

Changes:
--------
--- /work/SRC/openSUSE:Factory/shim/shim.changes        2021-03-10 
08:52:02.978566589 +0100
+++ /work/SRC/openSUSE:Factory/.shim.new.2401/shim.changes      2021-03-15 
10:53:43.801109986 +0100
@@ -1,0 +2,8 @@
+Thu Mar 11 03:15:03 UTC 2021 - Gary Ching-Pang Lin <g...@suse.com>
+
+- Refresh shim-bsc1182776-fix-crash-at-exit.patch to do the cleanup
+  also when Secure Boot is disabled (bsc#1183213, bsc#1182776)
+- Merged linker-version.pl into timestamp.pl and add the linker
+  version to signature files accordingly
+
+-------------------------------------------------------------------

Old:
----
  linker-version.pl

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ shim.spec ++++++
--- /var/tmp/diff_new_pack.2yL7CV/_old  2021-03-15 10:53:44.709111380 +0100
+++ /var/tmp/diff_new_pack.2yL7CV/_new  2021-03-15 10:53:44.709111380 +0100
@@ -59,7 +59,6 @@
 Source11:       signature-sles.x86_64.asc
 Source12:       signature-opensuse.aarch64.asc
 Source13:       signature-sles.aarch64.asc
-Source14:       linker-version.pl
 Source50:       dbx-cert.tar.xz
 # vendor-dbx.bin is generated by generate-vendor-dbx.sh in dbx-cert.tar.xz
 Source51:       vendor-dbx.bin
@@ -246,14 +245,6 @@
     # alternative: verify signature
     #sbverify --cert MicCorThiParMarRoo_2010-10-05.pem shim-signed.efi
     if test -n "$signature"; then
-%ifarch x86_64
-        # Modify MajorLinkerVersion and MinorLinkerVersion in the
-       # EFI/PE header to match the one for the SLE signature.
-        if test "$suffix" = "sles"; then
-            chmod 755 %{SOURCE14}
-            %{SOURCE14} shim.efi
-        fi
-%endif
        head -1 "$signature" > hash1
        cp shim.efi shim.efi.bak
        # pe header contains timestamp and checksum. we need to



++++++ shim-bsc1182776-fix-crash-at-exit.patch ++++++
--- /var/tmp/diff_new_pack.2yL7CV/_old  2021-03-15 10:53:44.805111527 +0100
+++ /var/tmp/diff_new_pack.2yL7CV/_new  2021-03-15 10:53:44.809111532 +0100
@@ -1,7 +1,58 @@
-From 74d26654d55a4f32e58b76757efca50ceedefef4 Mon Sep 17 00:00:00 2001
+From 999983b82c611d7d3b864f5f46764645f4eed096 Mon Sep 17 00:00:00 2001
+From: Stuart Hayes <stuart.w.ha...@gmail.com>
+Date: Fri, 8 Feb 2019 15:48:20 -0500
+Subject: [PATCH 1/2] Hook exit when shim_lock protocol installed
+
+A recent commit moved where the shim_lock protocol is loaded and
+unloaded, but did not move where exit was hooked and unhooked.  Exit
+needs to be hooked when the protocol is installed, so that the protocol
+will be uninstalled on exit.  Otherwise, the system can crash if, for
+example, shim loads grub, the user exits grub, shim is run again, which
+installs a second instance of the protocol, and then grub tries to use
+the shim_lock protocol that was installed by the first instance of shim.
+
+Signed-off-by: Stuart Hayes <stuart.w.ha...@gmail.com>
+Upstream-commit-id: 06c92591e94
+(cherry picked from commit b5e10f70c7a495dc1788e3604803ee633f1e5f76)
+---
+ shim.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/shim.c b/shim.c
+index 6ce30a06..e9ab8f1a 100644
+--- a/shim.c
++++ b/shim.c
+@@ -2517,9 +2517,9 @@ shim_init(void)
+                       loader_is_participating = 0;
+               }
+ 
+-              hook_exit(systab);
+       }
+ 
++      hook_exit(systab);
+       return install_shim_protocols();
+ }
+ 
+@@ -2537,9 +2537,10 @@ shim_fini(void)
+                * Remove our hooks from system services.
+                */
+               unhook_system_services();
+-              unhook_exit();
+       }
+ 
++      unhook_exit();
++
+       /*
+        * Free the space allocated for the alternative 2nd stage loader
+        */
+-- 
+2.29.2
+
+
+From 13eeece966bf2e5b2d1c1cca0c8b47bbded0f98e Mon Sep 17 00:00:00 2001
 From: Gary Lin <g...@suse.com>
 Date: Fri, 5 Mar 2021 15:00:29 +0800
-Subject: [PATCH] Restore loaded image of shim at Exit()
+Subject: [PATCH 2/2] Restore loaded image of shim at Exit()
 
 When grub2 invoked Exit() in AArch64 AAVMF, the VM crashed with the
 following messsages:
@@ -24,17 +75,18 @@
 do_exit().
 
 Signed-off-by: Gary Lin <g...@suse.com>
+(cherry picked from commit 74d26654d55a4f32e58b76757efca50ceedefef4)
 ---
  replacements.c |  2 ++
  shim.c         | 41 ++++++++++++++++++++++++-----------------
  shim.h         |  1 +
  3 files changed, 27 insertions(+), 17 deletions(-)
 
-Index: shim-15+git47/replacements.c
-===================================================================
---- shim-15+git47.orig/replacements.c
-+++ shim-15+git47/replacements.c
-@@ -159,6 +159,8 @@ do_exit(EFI_HANDLE ImageHandle, EFI_STAT
+diff --git a/replacements.c b/replacements.c
+index 944c779d..1d06b0cf 100644
+--- a/replacements.c
++++ b/replacements.c
+@@ -159,6 +159,8 @@ do_exit(EFI_HANDLE ImageHandle, EFI_STATUS ExitStatus,
  
        shim_fini();
  
@@ -43,11 +95,11 @@
        efi_status = gBS->Exit(ImageHandle, ExitStatus,
                               ExitDataSize, ExitData);
        if (EFI_ERROR(efi_status)) {
-Index: shim-15+git47/shim.c
-===================================================================
---- shim-15+git47.orig/shim.c
-+++ shim-15+git47/shim.c
-@@ -58,6 +58,8 @@
+diff --git a/shim.c b/shim.c
+index e9ab8f1a..b5882768 100644
+--- a/shim.c
++++ b/shim.c
+@@ -62,6 +62,8 @@
  
  static EFI_SYSTEM_TABLE *systab;
  static EFI_HANDLE global_image_handle;
@@ -56,7 +108,7 @@
  
  static CHAR16 *second_stage;
  static void *load_options;
-@@ -1861,13 +1863,24 @@ static EFI_STATUS shim_read_header(void
+@@ -1863,13 +1865,24 @@ static EFI_STATUS shim_read_header(void *data, 
unsigned int datasize,
        return efi_status;
  }
  
@@ -82,7 +134,7 @@
        EFI_IMAGE_ENTRY_POINT entry_point;
        EFI_PHYSICAL_ADDRESS alloc_address;
        UINTN alloc_pages;
-@@ -1882,7 +1895,7 @@ EFI_STATUS start_image(EFI_HANDLE image_
+@@ -1884,7 +1897,7 @@ EFI_STATUS start_image(EFI_HANDLE image_handle, CHAR16 
*ImagePath)
         * binary in order to find our path
         */
        efi_status = gBS->HandleProtocol(image_handle, &EFI_LOADED_IMAGE_GUID,
@@ -91,7 +143,7 @@
        if (EFI_ERROR(efi_status)) {
                perror(L"Unable to init protocol\n");
                return efi_status;
-@@ -1891,14 +1904,14 @@ EFI_STATUS start_image(EFI_HANDLE image_
+@@ -1893,14 +1906,14 @@ EFI_STATUS start_image(EFI_HANDLE image_handle, CHAR16 
*ImagePath)
        /*
         * Build a new path from the existing one plus the executable name
         */
@@ -108,7 +160,7 @@
                efi_status = parseNetbootinfo(image_handle);
                if (EFI_ERROR(efi_status)) {
                        perror(L"Netboot parsing failed: %r\n", efi_status);
-@@ -1914,7 +1927,7 @@ EFI_STATUS start_image(EFI_HANDLE image_
+@@ -1916,7 +1929,7 @@ EFI_STATUS start_image(EFI_HANDLE image_handle, CHAR16 
*ImagePath)
                data = sourcebuffer;
                datasize = sourcesize;
  #if  defined(ENABLE_HTTPBOOT)
@@ -117,7 +169,7 @@
                efi_status = httpboot_fetch_buffer (image_handle,
                                                    &sourcebuffer,
                                                    &sourcesize);
-@@ -1930,7 +1943,7 @@ EFI_STATUS start_image(EFI_HANDLE image_
+@@ -1932,7 +1945,7 @@ EFI_STATUS start_image(EFI_HANDLE image_handle, CHAR16 
*ImagePath)
                /*
                 * Read the new executable off disk
                 */
@@ -126,7 +178,7 @@
                if (EFI_ERROR(efi_status)) {
                        perror(L"Failed to load image %s: %r\n",
                               PathName, efi_status);
-@@ -1949,13 +1962,13 @@ EFI_STATUS start_image(EFI_HANDLE image_
+@@ -1951,13 +1964,13 @@ EFI_STATUS start_image(EFI_HANDLE image_handle, CHAR16 
*ImagePath)
         * We need to modify the loaded image protocol entry before running
         * the new binary, so back it up
         */
@@ -143,7 +195,7 @@
                perror(L"Unable to update loaded image file path\n");
                efi_status = EFI_OUT_OF_RESOURCES;
                goto restore;
-@@ -1964,7 +1977,7 @@ EFI_STATUS start_image(EFI_HANDLE image_
+@@ -1966,7 +1979,7 @@ EFI_STATUS start_image(EFI_HANDLE image_handle, CHAR16 
*ImagePath)
        /*
         * Verify and, if appropriate, relocate and execute the executable
         */
@@ -152,7 +204,7 @@
                                  &alloc_address, &alloc_pages);
        if (EFI_ERROR(efi_status)) {
                perror(L"Failed to load image: %r\n", efi_status);
-@@ -1981,13 +1994,7 @@ EFI_STATUS start_image(EFI_HANDLE image_
+@@ -1983,13 +1996,7 @@ EFI_STATUS start_image(EFI_HANDLE image_handle, CHAR16 
*ImagePath)
        efi_status = entry_point(image_handle, systab);
  
  restore:
@@ -167,11 +219,11 @@
  done:
        if (PathName)
                FreePool(PathName);
-Index: shim-15+git47/shim.h
-===================================================================
---- shim-15+git47.orig/shim.h
-+++ shim-15+git47/shim.h
-@@ -163,6 +163,7 @@ extern EFI_STATUS LogError_(const char *
+diff --git a/shim.h b/shim.h
+index 3db7df9d..38627abf 100644
+--- a/shim.h
++++ b/shim.h
+@@ -160,6 +160,7 @@ extern EFI_STATUS LogError_(const char *file, int line, 
const char *func, CHAR16
  extern EFI_STATUS VLogError(const char *file, int line, const char *func, 
CHAR16 *fmt, va_list args);
  extern VOID PrintErrors(VOID);
  extern VOID ClearErrors(VOID);
@@ -179,3 +231,6 @@
  extern EFI_STATUS start_image(EFI_HANDLE image_handle, CHAR16 *ImagePath);
  extern EFI_STATUS import_mok_state(EFI_HANDLE image_handle);
  
+-- 
+2.29.2
+

++++++ signature-opensuse.aarch64.asc ++++++
--- /var/tmp/diff_new_pack.2yL7CV/_old  2021-03-15 10:53:44.861111613 +0100
+++ /var/tmp/diff_new_pack.2yL7CV/_new  2021-03-15 10:53:44.861111613 +0100
@@ -1,6 +1,7 @@
 hash: 96275dfd6282a522b011177ee049296952ac794832091f937fbbf92869028629
 # 2069-04-10 06:07:54
 timestamp: babababa
+linker: 2002
 checksum: ef25
 -----BEGIN AUTHENTICODE SIGNATURE-----
 MIIhwQYJKoZIhvcNAQcCoIIhsjCCIa4CAQExDzANBglghkgBZQMEAgEFADBcBgor

++++++ signature-opensuse.x86_64.asc ++++++
--- /var/tmp/diff_new_pack.2yL7CV/_old  2021-03-15 10:53:44.881111643 +0100
+++ /var/tmp/diff_new_pack.2yL7CV/_new  2021-03-15 10:53:44.881111643 +0100
@@ -1,6 +1,7 @@
 hash: f5e892dd6ec4c2defa4a495c09219b621379b64da3d1b2e34adf4b5f1102bd39
 # 1970-01-01 00:00:00
 timestamp: 0
+linker: 2002
 checksum: 65ba
 -----BEGIN AUTHENTICODE SIGNATURE-----
 MIIhVgYJKoZIhvcNAQcCoIIhRzCCIUMCAQExDzANBglghkgBZQMEAgEFADBcBgor

++++++ signature-sles.aarch64.asc ++++++
--- /var/tmp/diff_new_pack.2yL7CV/_old  2021-03-15 10:53:44.901111674 +0100
+++ /var/tmp/diff_new_pack.2yL7CV/_new  2021-03-15 10:53:44.905111680 +0100
@@ -1,6 +1,7 @@
 hash: f31fd461c5e99510403fc97c1da2d8a9cbe270597d32badf8fd66b77495f8d94
 # 2069-04-10 06:07:54
 timestamp: babababa
+linker: 2002
 checksum: 61c9
 -----BEGIN AUTHENTICODE SIGNATURE-----
 MIIh9AYJKoZIhvcNAQcCoIIh5TCCIeECAQExDzANBglghkgBZQMEAgEFADBcBgor

++++++ signature-sles.x86_64.asc ++++++
--- /var/tmp/diff_new_pack.2yL7CV/_old  2021-03-15 10:53:44.925111711 +0100
+++ /var/tmp/diff_new_pack.2yL7CV/_new  2021-03-15 10:53:44.925111711 +0100
@@ -1,6 +1,7 @@
 hash: 040b3bc339e9b6f9acd828b88f3482a5c3f64e67e5a714ba1da8a70453b34af6
 # 1970-01-01 00:00:00
 timestamp: 0
+linker: 2002
 checksum: 15eb
 -----BEGIN AUTHENTICODE SIGNATURE-----
 MIIhRgYJKoZIhvcNAQcCoIIhNzCCITMCAQExDzANBglghkgBZQMEAgEFADBcBgor

++++++ timestamp.pl ++++++
--- /var/tmp/diff_new_pack.2yL7CV/_old  2021-03-15 10:53:44.945111741 +0100
+++ /var/tmp/diff_new_pack.2yL7CV/_new  2021-03-15 10:53:44.945111741 +0100
@@ -1,5 +1,5 @@
 #!/usr/bin/perl -w
-# Copyright (c) 2012,2013 SUSE Linux Products GmbH
+# Copyright (c) 2012-2021 SUSE LLC
 #
 # Permission is hereby granted, free of charge, to any person obtaining a copy
 # of this software and associated documentation files (the "Software"), to deal
@@ -33,7 +33,7 @@
 
 =item B<--set-form-file=FILE>
 
-parse timestamp and checksum from file
+parse timestamp, checksum, and linker version from file
 
 =item B<--help, -h>
 
@@ -74,6 +74,7 @@
 
 my $set_timestamp;
 my $set_checksum;
+my $set_linker;
 
 if ($options{'set-from-file'}) {
        die "$options{'set-from-file'}: $!\n" unless open(my $fh, '<', 
$options{'set-from-file'});
@@ -82,14 +83,17 @@
                if (/^timestamp: ([0-9a-f]+)/) {
                        $set_timestamp = pack('L', hex($1));
                        next;
+               } elsif (/^linker: ([0-9a-f]+)/) {
+                       $set_linker = pack('S', hex($1));
+                       next;
                } elsif (/^checksum: ([0-9a-f]+)/) {
                        $set_checksum = pack('S', hex($1));
                        next;
                }
-               last if $set_timestamp && $set_checksum;
+               last if $set_timestamp && $set_checksum && $set_linker;
        }
        close($fh);
-       die "file didn't contain timestamp and checksum\n" unless 
$set_timestamp && $set_checksum;
+       die "file didn't contain timestamp, checksum, or linker\n" unless 
$set_timestamp && $set_checksum && $set_linker;
 }
 
 sub do_show($)
@@ -104,6 +108,11 @@
        print strftime("# %Y-%m-%d %H:%M:%S\n", gmtime($timestamp));
        printf ("timestamp: %x\n", $timestamp);
 
+       die "seek $file: $!\n" unless seek($fh, 154, 0);
+       die "read $file: $!\n" unless read($fh, $value, 2);
+
+       printf ("linker: %x\n", unpack('S', $value));
+
        die "seek $file: $!\n" unless seek($fh, 216, 0);
        die "read $file: $!\n" unless read($fh, $value, 2);
 
@@ -119,12 +128,14 @@
        die "seek $file: $!\n" unless seek($fh, 136, 0);
        die "write $file: $!\n" unless print $fh $set_timestamp;
 
+       die "seek $file: $!\n" unless seek($fh, 154, 0);
+       die "write $file: $!\n" unless print $fh $set_linker;
+
        die "seek $file: $!\n" unless seek($fh, 216, 0);
        die "read $file: $!\n" unless print $fh $set_checksum;
        close($fh);
 }
 
-
 for my $file (@ARGV) {
        if ($options{'set-from-file'}) {
                do_set($file);

Reply via email to