[arch-commits] Commit in (7 files)

Bruno Pagani archange at archlinux.org
Tue Jun 13 21:03:12 UTC 2017


    Date: Tuesday, June 13, 2017 @ 21:03:12
  Author: archange
Revision: 236696

Initial import of fwupdate from the AUR

Added:
  fwupdate/
  fwupdate/repos/
  fwupdate/trunk/
  fwupdate/trunk/PKGBUILD
  fwupdate/trunk/fix-sprintf-formatting.patch
  fwupdate/trunk/fix-uninitialized-variable.patch
  fwupdate/trunk/fwupdate.install

----------------------------------+
 PKGBUILD                         |   46 +++++++++++++++++++++++++++
 fix-sprintf-formatting.patch     |   62 +++++++++++++++++++++++++++++++++++++
 fix-uninitialized-variable.patch |   37 ++++++++++++++++++++++
 fwupdate.install                 |   11 ++++++
 4 files changed, 156 insertions(+)

Added: fwupdate/trunk/PKGBUILD
===================================================================
--- fwupdate/trunk/PKGBUILD	                        (rev 0)
+++ fwupdate/trunk/PKGBUILD	2017-06-13 21:03:12 UTC (rev 236696)
@@ -0,0 +1,46 @@
+# Maintainer: Bruno Pagani (a.k.a. ArchangeGabriel) <archange at archlinux.org>
+# Contributor: Mirco Tischler <mt-ml at gmx dot de>
+
+pkgname=fwupdate
+pkgver=9
+pkgrel=1
+pkgdesc="Tools for using the ESRT and UpdateCapsule() to apply firmware updates"
+arch=('i686' 'x86_64')
+url="https://github.com/rhinstaller/fwupdate"
+license=('GPL2')
+depends=('efivar' 'libsmbios' 'bash')
+makedepends=('pesign' 'gnu-efi-libs')
+source=("${url}/releases/download/${pkgver}/${pkgname}-${pkgver}.tar.bz2"
+	    'fix-uninitialized-variable.patch'
+	    'fix-sprintf-formatting.patch')
+sha256sums=('e926a7b33a58f5dbf029a5a687375e88b18a41f0742ba871aff7d1d82d075c87'
+            '56d27c36b7f1178c818c37153e3dbdd0a26036366b3dc935cd169b0c716cb610'
+            '639114a5d98c688f92c59d08aac1b182da705ad443c8b1367160c7a8c4fcd115')
+install=fwupdate.install
+
+_efidir=arch
+
+prepare() {
+    cd ${pkgname}-${pkgver}
+    patch -p1 -i ../fix-uninitialized-variable.patch
+    patch -p1 -i ../fix-sprintf-formatting.patch
+}
+
+build() {
+    cd ${pkgname}-${pkgver}
+    make EFIDIR="${_efidir}" GNUEFIDIR=/usr/lib
+}
+
+package() {
+    cd ${pkgname}-${pkgver}
+
+    make LIBDIR=/usr/lib EFIDIR="${_efidir}" DESTDIR="${pkgdir}" libexecdir=/usr/lib/ install
+
+    # Do not install anything under /boot. Copy files to /usr/lib/fwupdate for manual installation.
+    install -d ${pkgdir}/usr/lib/fwupdate
+    mv ${pkgdir}/boot/efi/EFI ${pkgdir}/usr/lib/fwupdate/EFI
+    rm -rf ${pkgdir}/boot
+    rm -rf ${pkgdir}/usr/src
+    rm -rf ${pkgdir}/usr/lib/debug
+    rmdir  ${pkgdir}/usr/share/fwupdate
+}

Added: fwupdate/trunk/fix-sprintf-formatting.patch
===================================================================
--- fwupdate/trunk/fix-sprintf-formatting.patch	                        (rev 0)
+++ fwupdate/trunk/fix-sprintf-formatting.patch	2017-06-13 21:03:12 UTC (rev 236696)
@@ -0,0 +1,62 @@
+From cd8f7d79f84155d1dfbff3bb169558a8b06fb719 Mon Sep 17 00:00:00 2001
+From: Peter Jones <pjones at redhat.com>
+Date: Fri, 19 May 2017 16:39:56 -0400
+Subject: [PATCH] Fix sprintf formatting for Boot####.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+If you give it enough compiler flags, gcc believes the following:
+-----------------------
+    libfwup.c: In function ‘set_up_boot_next’:
+    libfwup.c:1049:27: error: ‘__builtin___sprintf_chk’ may write a terminating nul past the end of the destination [-Werror=format-overflow=]
+       sprintf(boot_next_name, "Boot%04X", boot_next);
+                               ^~~~~~~~~~
+    In file included from /usr/include/stdio.h:939:0,
+                     from libfwup.c:17:
+    /usr/include/bits/stdio2.h:33:10: note: ‘__builtin___sprintf_chk’ output between 9 and 10 bytes into a destination of size 9
+       return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
+              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+           __bos (__s), __fmt, __va_arg_pack ());
+           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    cc1: all warnings being treated as errors
+    make[1]: *** [Makefile:70: libfwup.o] Error 1
+    make[1]: Leaving directory '/home/pjones/devel/rhel/fwupdate/fwupdate-9/linux'
+    make: *** [Makefile:10: all] Error 2
+-----------------------
+
+The code in question is:
+-----------------------
+		if (boot_next >= 0x10000) {
+			efi_error("no free boot variables!");
+			goto out;
+		}
+
+		sprintf(boot_next_name, "Boot%04X", boot_next);
+-----------------------
+
+It really should know it can't be a higher value than 0xffff.  Even
+so, while it's not true that this can happen, since we never get to that
+code if boot_next is > 0xffff, the compiler can't figure that out, so
+it's complaining about an int being crammed into 4 bytes of hex.
+
+So this patch just tells it the maximum value is 0xffff.
+
+Signed-off-by: Peter Jones <pjones at redhat.com>
+---
+ linux/libfwup.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/linux/libfwup.c b/linux/libfwup.c
+index 929c106..1b9b72a 100644
+--- a/linux/libfwup.c
++++ b/linux/libfwup.c
+@@ -1046,7 +1046,7 @@ set_up_boot_next(void)
+ 			goto out;
+ 		}
+ 
+-		sprintf(boot_next_name, "Boot%04X", boot_next);
++		sprintf(boot_next_name, "Boot%04hX", boot_next & 0xffff);
+ 		rc = efi_set_variable(efi_guid_global, boot_next_name, opt,
+ 				      opt_size,
+ 				      EFI_VARIABLE_NON_VOLATILE |

Added: fwupdate/trunk/fix-uninitialized-variable.patch
===================================================================
--- fwupdate/trunk/fix-uninitialized-variable.patch	                        (rev 0)
+++ fwupdate/trunk/fix-uninitialized-variable.patch	2017-06-13 21:03:12 UTC (rev 236696)
@@ -0,0 +1,37 @@
+From a9bfbb4a082c2a7e8917865877976e8008712ca6 Mon Sep 17 00:00:00 2001
+From: Mirco Tischler <mt-ml at gmx.de>
+Date: Mon, 6 Mar 2017 23:45:46 +0100
+Subject: [PATCH] Fix uninitialized variable.
+
+If boot_order_size is 0, i was never set. On gcc-6.3.1, this broke the
+build if compiled with -O2 (-Werror=maybe_uninitialized). This is the
+error:
+
+libfwup.c: In function 'set_up_boot_next':
+libfwup.c:818:16: error: 'i' may be used uninitialized in this function [-Werror=maybe-uninitialized]
+  new_boot_order[i] = boot_entry;
+                ^
+libfwup.c:780:15: note: 'i' was declared here
+  unsigned int i;
+               ^
+cc1: all warnings being treated as errors
+---
+ linux/libfwup.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/linux/libfwup.c b/linux/libfwup.c
+index fe4ece4..2cc03c0 100644
+--- a/linux/libfwup.c
++++ b/linux/libfwup.c
+@@ -777,7 +777,7 @@ add_to_boot_order(uint16_t boot_entry)
+ 	size_t boot_order_size = 0;
+ 	uint32_t attr;
+ 	int rc;
+-	unsigned int i;
++	unsigned int i = 0;
+ 
+ 	rc = efi_get_variable_size(efi_guid_global, "BootOrder",
+ 				   &boot_order_size);
+-- 
+2.12.0
+

Added: fwupdate/trunk/fwupdate.install
===================================================================
--- fwupdate/trunk/fwupdate.install	                        (rev 0)
+++ fwupdate/trunk/fwupdate.install	2017-06-13 21:03:12 UTC (rev 236696)
@@ -0,0 +1,11 @@
+post_install() {
+	echo
+	echo "To use the efi fimware update executable, copy the"
+	echo "content of /usr/lib/fwupdate/EFI/ to your EFI partition,"
+	echo "usually /boot/EFI."
+	echo
+}
+
+post_upgrade() {
+	post_install
+}



More information about the arch-commits mailing list