Date: Tuesday, June 13, 2017 @ 21:03:30 Author: archange Revision: 236697
archrelease: copy trunk to community-i686, community-x86_64 Added: fwupdate/repos/community-i686/ fwupdate/repos/community-i686/PKGBUILD (from rev 236696, fwupdate/trunk/PKGBUILD) fwupdate/repos/community-i686/fix-sprintf-formatting.patch (from rev 236696, fwupdate/trunk/fix-sprintf-formatting.patch) fwupdate/repos/community-i686/fix-uninitialized-variable.patch (from rev 236696, fwupdate/trunk/fix-uninitialized-variable.patch) fwupdate/repos/community-i686/fwupdate.install (from rev 236696, fwupdate/trunk/fwupdate.install) fwupdate/repos/community-x86_64/ fwupdate/repos/community-x86_64/PKGBUILD (from rev 236696, fwupdate/trunk/PKGBUILD) fwupdate/repos/community-x86_64/fix-sprintf-formatting.patch (from rev 236696, fwupdate/trunk/fix-sprintf-formatting.patch) fwupdate/repos/community-x86_64/fix-uninitialized-variable.patch (from rev 236696, fwupdate/trunk/fix-uninitialized-variable.patch) fwupdate/repos/community-x86_64/fwupdate.install (from rev 236696, fwupdate/trunk/fwupdate.install) ---------------------------------------------------+ community-i686/PKGBUILD | 46 ++++++++++++++ community-i686/fix-sprintf-formatting.patch | 62 ++++++++++++++++++++ community-i686/fix-uninitialized-variable.patch | 37 +++++++++++ community-i686/fwupdate.install | 11 +++ community-x86_64/PKGBUILD | 46 ++++++++++++++ community-x86_64/fix-sprintf-formatting.patch | 62 ++++++++++++++++++++ community-x86_64/fix-uninitialized-variable.patch | 37 +++++++++++ community-x86_64/fwupdate.install | 11 +++ 8 files changed, 312 insertions(+) Copied: fwupdate/repos/community-i686/PKGBUILD (from rev 236696, fwupdate/trunk/PKGBUILD) =================================================================== --- community-i686/PKGBUILD (rev 0) +++ community-i686/PKGBUILD 2017-06-13 21:03:30 UTC (rev 236697) @@ -0,0 +1,46 @@ +# Maintainer: Bruno Pagani (a.k.a. ArchangeGabriel) <archa...@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 +} Copied: fwupdate/repos/community-i686/fix-sprintf-formatting.patch (from rev 236696, fwupdate/trunk/fix-sprintf-formatting.patch) =================================================================== --- community-i686/fix-sprintf-formatting.patch (rev 0) +++ community-i686/fix-sprintf-formatting.patch 2017-06-13 21:03:30 UTC (rev 236697) @@ -0,0 +1,62 @@ +From cd8f7d79f84155d1dfbff3bb169558a8b06fb719 Mon Sep 17 00:00:00 2001 +From: Peter Jones <pjo...@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 <pjo...@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 | Copied: fwupdate/repos/community-i686/fix-uninitialized-variable.patch (from rev 236696, fwupdate/trunk/fix-uninitialized-variable.patch) =================================================================== --- community-i686/fix-uninitialized-variable.patch (rev 0) +++ community-i686/fix-uninitialized-variable.patch 2017-06-13 21:03:30 UTC (rev 236697) @@ -0,0 +1,37 @@ +From a9bfbb4a082c2a7e8917865877976e8008712ca6 Mon Sep 17 00:00:00 2001 +From: Mirco Tischler <mt...@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 + Copied: fwupdate/repos/community-i686/fwupdate.install (from rev 236696, fwupdate/trunk/fwupdate.install) =================================================================== --- community-i686/fwupdate.install (rev 0) +++ community-i686/fwupdate.install 2017-06-13 21:03:30 UTC (rev 236697) @@ -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 +} Copied: fwupdate/repos/community-x86_64/PKGBUILD (from rev 236696, fwupdate/trunk/PKGBUILD) =================================================================== --- community-x86_64/PKGBUILD (rev 0) +++ community-x86_64/PKGBUILD 2017-06-13 21:03:30 UTC (rev 236697) @@ -0,0 +1,46 @@ +# Maintainer: Bruno Pagani (a.k.a. ArchangeGabriel) <archa...@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 +} Copied: fwupdate/repos/community-x86_64/fix-sprintf-formatting.patch (from rev 236696, fwupdate/trunk/fix-sprintf-formatting.patch) =================================================================== --- community-x86_64/fix-sprintf-formatting.patch (rev 0) +++ community-x86_64/fix-sprintf-formatting.patch 2017-06-13 21:03:30 UTC (rev 236697) @@ -0,0 +1,62 @@ +From cd8f7d79f84155d1dfbff3bb169558a8b06fb719 Mon Sep 17 00:00:00 2001 +From: Peter Jones <pjo...@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 <pjo...@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 | Copied: fwupdate/repos/community-x86_64/fix-uninitialized-variable.patch (from rev 236696, fwupdate/trunk/fix-uninitialized-variable.patch) =================================================================== --- community-x86_64/fix-uninitialized-variable.patch (rev 0) +++ community-x86_64/fix-uninitialized-variable.patch 2017-06-13 21:03:30 UTC (rev 236697) @@ -0,0 +1,37 @@ +From a9bfbb4a082c2a7e8917865877976e8008712ca6 Mon Sep 17 00:00:00 2001 +From: Mirco Tischler <mt...@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 + Copied: fwupdate/repos/community-x86_64/fwupdate.install (from rev 236696, fwupdate/trunk/fwupdate.install) =================================================================== --- community-x86_64/fwupdate.install (rev 0) +++ community-x86_64/fwupdate.install 2017-06-13 21:03:30 UTC (rev 236697) @@ -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 +}