Date: Monday, September 4, 2017 @ 00:03:40 Author: archange Revision: 255625
archrelease: copy trunk to community-i686, community-x86_64 Added: fwupdate/repos/community-i686/PKGBUILD (from rev 255624, fwupdate/trunk/PKGBUILD) fwupdate/repos/community-i686/create-fw-directory.patch (from rev 255624, fwupdate/trunk/create-fw-directory.patch) fwupdate/repos/community-i686/fix-sprintf-formatting.patch (from rev 255624, fwupdate/trunk/fix-sprintf-formatting.patch) fwupdate/repos/community-i686/fix-uninitialized-variable.patch (from rev 255624, fwupdate/trunk/fix-uninitialized-variable.patch) fwupdate/repos/community-i686/fwupdate.install (from rev 255624, fwupdate/trunk/fwupdate.install) fwupdate/repos/community-x86_64/PKGBUILD (from rev 255624, fwupdate/trunk/PKGBUILD) fwupdate/repos/community-x86_64/create-fw-directory.patch (from rev 255624, fwupdate/trunk/create-fw-directory.patch) fwupdate/repos/community-x86_64/fix-sprintf-formatting.patch (from rev 255624, fwupdate/trunk/fix-sprintf-formatting.patch) fwupdate/repos/community-x86_64/fix-uninitialized-variable.patch (from rev 255624, fwupdate/trunk/fix-uninitialized-variable.patch) fwupdate/repos/community-x86_64/fwupdate.install (from rev 255624, fwupdate/trunk/fwupdate.install) Deleted: fwupdate/repos/community-i686/PKGBUILD fwupdate/repos/community-i686/fix-sprintf-formatting.patch fwupdate/repos/community-i686/fix-uninitialized-variable.patch fwupdate/repos/community-i686/fwupdate.install fwupdate/repos/community-x86_64/PKGBUILD fwupdate/repos/community-x86_64/fix-sprintf-formatting.patch fwupdate/repos/community-x86_64/fix-uninitialized-variable.patch fwupdate/repos/community-x86_64/fwupdate.install ---------------------------------------------------+ /PKGBUILD | 98 +++++++++++++++ /fix-sprintf-formatting.patch | 124 ++++++++++++++++++++ /fix-uninitialized-variable.patch | 74 +++++++++++ /fwupdate.install | 22 +++ community-i686/PKGBUILD | 46 ------- community-i686/create-fw-directory.patch | 62 ++++++++++ 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/create-fw-directory.patch | 62 ++++++++++ community-x86_64/fix-sprintf-formatting.patch | 62 ---------- community-x86_64/fix-uninitialized-variable.patch | 37 ----- community-x86_64/fwupdate.install | 11 - 14 files changed, 442 insertions(+), 312 deletions(-) Deleted: community-i686/PKGBUILD =================================================================== --- community-i686/PKGBUILD 2017-09-04 00:02:35 UTC (rev 255624) +++ community-i686/PKGBUILD 2017-09-04 00:03:40 UTC (rev 255625) @@ -1,46 +0,0 @@ -# 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/PKGBUILD (from rev 255624, fwupdate/trunk/PKGBUILD) =================================================================== --- community-i686/PKGBUILD (rev 0) +++ community-i686/PKGBUILD 2017-09-04 00:03:40 UTC (rev 255625) @@ -0,0 +1,49 @@ +# Maintainer: Bruno Pagani (a.k.a. ArchangeGabriel) <archa...@archlinux.org> +# Contributor: Mirco Tischler <mt-ml at gmx dot de> + +pkgname=fwupdate +pkgver=9 +pkgrel=2 +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' + 'create-fw-directory.patch') +sha256sums=('e926a7b33a58f5dbf029a5a687375e88b18a41f0742ba871aff7d1d82d075c87' + '56d27c36b7f1178c818c37153e3dbdd0a26036366b3dc935cd169b0c716cb610' + '639114a5d98c688f92c59d08aac1b182da705ad443c8b1367160c7a8c4fcd115' + 'fabe3dd8755cd73955893a4dc22cc9ff8965b5a873e2af7f781421fced3dc0ec') +install=fwupdate.install + +_efidir=arch + +prepare() { + cd ${pkgname}-${pkgver} + patch -p1 -i ../fix-uninitialized-variable.patch + patch -p1 -i ../fix-sprintf-formatting.patch + patch -p1 -i ../create-fw-directory.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/create-fw-directory.patch (from rev 255624, fwupdate/trunk/create-fw-directory.patch) =================================================================== --- community-i686/create-fw-directory.patch (rev 0) +++ community-i686/create-fw-directory.patch 2017-09-04 00:03:40 UTC (rev 255625) @@ -0,0 +1,62 @@ +From f713884b1766396aab4f0fb75a7cc7b8cb8319bb Mon Sep 17 00:00:00 2001 +From: Mario Limonciello <mario.limoncie...@dell.com> +Date: Tue, 11 Jul 2017 10:35:37 -0500 +Subject: [PATCH] create the 'fw' directory on the ESP if it doesn't exist + +--- + linux/libfwup.c | 24 +++++++++++++++++++++--- + 1 file changed, 21 insertions(+), 3 deletions(-) + +diff --git a/linux/libfwup.c b/linux/libfwup.c +index 4aa2bf3..d37f644 100644 +--- a/linux/libfwup.c ++++ b/linux/libfwup.c +@@ -1177,6 +1177,8 @@ get_existing_media_path(update_info *info) + static int + get_fd_and_media_path(update_info *info, char **path) + { ++ struct stat st; ++ char *directory = NULL; + char *fullpath = NULL; + int fd = -1; + int rc; +@@ -1193,13 +1195,28 @@ get_fd_and_media_path(update_info *info, char **path) + } + } else { + /* fall back to creating a new file from scratch */ +- rc = asprintf(&fullpath, +- "/boot/efi/EFI/%s/fw/fwupdate-XXXXXX.cap", ++ rc = asprintf(&directory, ++ "/boot/efi/EFI/%s/fw", + FWUP_EFI_DIR_NAME); + if (rc < 0) { +- efi_error("asprintf failed"); ++ efi_error("asprintf directory failed"); + return fd; + } ++ if (stat(directory, &st) != 0 || ++ (st.st_mode & S_IFDIR) == 0) { ++ rc = mkdir(directory, 0775); ++ if (rc < 0) { ++ efi_error("failed to make %s", directory); ++ goto out; ++ } ++ } ++ rc = asprintf(&fullpath, ++ "/boot/efi/EFI/%s/fw/fwupdate-XXXXXX.cap", ++ directory); ++ if (rc < 0) { ++ efi_error("asprintf fullpath failed"); ++ goto out; ++ } + fd = mkostemps(fullpath, 4, O_CREAT|O_TRUNC|O_CLOEXEC); + if (fd < 0) { + efi_error("mkostemps(%s) failed", fullpath); +@@ -1213,6 +1230,7 @@ get_fd_and_media_path(update_info *info, char **path) + fullpath = NULL; + } + out: ++ free(directory); + free(fullpath); + return fd; + } Deleted: community-i686/fix-sprintf-formatting.patch =================================================================== --- community-i686/fix-sprintf-formatting.patch 2017-09-04 00:02:35 UTC (rev 255624) +++ community-i686/fix-sprintf-formatting.patch 2017-09-04 00:03:40 UTC (rev 255625) @@ -1,62 +0,0 @@ -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-sprintf-formatting.patch (from rev 255624, fwupdate/trunk/fix-sprintf-formatting.patch) =================================================================== --- community-i686/fix-sprintf-formatting.patch (rev 0) +++ community-i686/fix-sprintf-formatting.patch 2017-09-04 00:03:40 UTC (rev 255625) @@ -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 | Deleted: community-i686/fix-uninitialized-variable.patch =================================================================== --- community-i686/fix-uninitialized-variable.patch 2017-09-04 00:02:35 UTC (rev 255624) +++ community-i686/fix-uninitialized-variable.patch 2017-09-04 00:03:40 UTC (rev 255625) @@ -1,37 +0,0 @@ -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/fix-uninitialized-variable.patch (from rev 255624, fwupdate/trunk/fix-uninitialized-variable.patch) =================================================================== --- community-i686/fix-uninitialized-variable.patch (rev 0) +++ community-i686/fix-uninitialized-variable.patch 2017-09-04 00:03:40 UTC (rev 255625) @@ -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 + Deleted: community-i686/fwupdate.install =================================================================== --- community-i686/fwupdate.install 2017-09-04 00:02:35 UTC (rev 255624) +++ community-i686/fwupdate.install 2017-09-04 00:03:40 UTC (rev 255625) @@ -1,11 +0,0 @@ -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-i686/fwupdate.install (from rev 255624, fwupdate/trunk/fwupdate.install) =================================================================== --- community-i686/fwupdate.install (rev 0) +++ community-i686/fwupdate.install 2017-09-04 00:03:40 UTC (rev 255625) @@ -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 +} Deleted: community-x86_64/PKGBUILD =================================================================== --- community-x86_64/PKGBUILD 2017-09-04 00:02:35 UTC (rev 255624) +++ community-x86_64/PKGBUILD 2017-09-04 00:03:40 UTC (rev 255625) @@ -1,46 +0,0 @@ -# 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/PKGBUILD (from rev 255624, fwupdate/trunk/PKGBUILD) =================================================================== --- community-x86_64/PKGBUILD (rev 0) +++ community-x86_64/PKGBUILD 2017-09-04 00:03:40 UTC (rev 255625) @@ -0,0 +1,49 @@ +# Maintainer: Bruno Pagani (a.k.a. ArchangeGabriel) <archa...@archlinux.org> +# Contributor: Mirco Tischler <mt-ml at gmx dot de> + +pkgname=fwupdate +pkgver=9 +pkgrel=2 +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' + 'create-fw-directory.patch') +sha256sums=('e926a7b33a58f5dbf029a5a687375e88b18a41f0742ba871aff7d1d82d075c87' + '56d27c36b7f1178c818c37153e3dbdd0a26036366b3dc935cd169b0c716cb610' + '639114a5d98c688f92c59d08aac1b182da705ad443c8b1367160c7a8c4fcd115' + 'fabe3dd8755cd73955893a4dc22cc9ff8965b5a873e2af7f781421fced3dc0ec') +install=fwupdate.install + +_efidir=arch + +prepare() { + cd ${pkgname}-${pkgver} + patch -p1 -i ../fix-uninitialized-variable.patch + patch -p1 -i ../fix-sprintf-formatting.patch + patch -p1 -i ../create-fw-directory.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/create-fw-directory.patch (from rev 255624, fwupdate/trunk/create-fw-directory.patch) =================================================================== --- community-x86_64/create-fw-directory.patch (rev 0) +++ community-x86_64/create-fw-directory.patch 2017-09-04 00:03:40 UTC (rev 255625) @@ -0,0 +1,62 @@ +From f713884b1766396aab4f0fb75a7cc7b8cb8319bb Mon Sep 17 00:00:00 2001 +From: Mario Limonciello <mario.limoncie...@dell.com> +Date: Tue, 11 Jul 2017 10:35:37 -0500 +Subject: [PATCH] create the 'fw' directory on the ESP if it doesn't exist + +--- + linux/libfwup.c | 24 +++++++++++++++++++++--- + 1 file changed, 21 insertions(+), 3 deletions(-) + +diff --git a/linux/libfwup.c b/linux/libfwup.c +index 4aa2bf3..d37f644 100644 +--- a/linux/libfwup.c ++++ b/linux/libfwup.c +@@ -1177,6 +1177,8 @@ get_existing_media_path(update_info *info) + static int + get_fd_and_media_path(update_info *info, char **path) + { ++ struct stat st; ++ char *directory = NULL; + char *fullpath = NULL; + int fd = -1; + int rc; +@@ -1193,13 +1195,28 @@ get_fd_and_media_path(update_info *info, char **path) + } + } else { + /* fall back to creating a new file from scratch */ +- rc = asprintf(&fullpath, +- "/boot/efi/EFI/%s/fw/fwupdate-XXXXXX.cap", ++ rc = asprintf(&directory, ++ "/boot/efi/EFI/%s/fw", + FWUP_EFI_DIR_NAME); + if (rc < 0) { +- efi_error("asprintf failed"); ++ efi_error("asprintf directory failed"); + return fd; + } ++ if (stat(directory, &st) != 0 || ++ (st.st_mode & S_IFDIR) == 0) { ++ rc = mkdir(directory, 0775); ++ if (rc < 0) { ++ efi_error("failed to make %s", directory); ++ goto out; ++ } ++ } ++ rc = asprintf(&fullpath, ++ "/boot/efi/EFI/%s/fw/fwupdate-XXXXXX.cap", ++ directory); ++ if (rc < 0) { ++ efi_error("asprintf fullpath failed"); ++ goto out; ++ } + fd = mkostemps(fullpath, 4, O_CREAT|O_TRUNC|O_CLOEXEC); + if (fd < 0) { + efi_error("mkostemps(%s) failed", fullpath); +@@ -1213,6 +1230,7 @@ get_fd_and_media_path(update_info *info, char **path) + fullpath = NULL; + } + out: ++ free(directory); + free(fullpath); + return fd; + } Deleted: community-x86_64/fix-sprintf-formatting.patch =================================================================== --- community-x86_64/fix-sprintf-formatting.patch 2017-09-04 00:02:35 UTC (rev 255624) +++ community-x86_64/fix-sprintf-formatting.patch 2017-09-04 00:03:40 UTC (rev 255625) @@ -1,62 +0,0 @@ -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-sprintf-formatting.patch (from rev 255624, fwupdate/trunk/fix-sprintf-formatting.patch) =================================================================== --- community-x86_64/fix-sprintf-formatting.patch (rev 0) +++ community-x86_64/fix-sprintf-formatting.patch 2017-09-04 00:03:40 UTC (rev 255625) @@ -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 | Deleted: community-x86_64/fix-uninitialized-variable.patch =================================================================== --- community-x86_64/fix-uninitialized-variable.patch 2017-09-04 00:02:35 UTC (rev 255624) +++ community-x86_64/fix-uninitialized-variable.patch 2017-09-04 00:03:40 UTC (rev 255625) @@ -1,37 +0,0 @@ -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/fix-uninitialized-variable.patch (from rev 255624, fwupdate/trunk/fix-uninitialized-variable.patch) =================================================================== --- community-x86_64/fix-uninitialized-variable.patch (rev 0) +++ community-x86_64/fix-uninitialized-variable.patch 2017-09-04 00:03:40 UTC (rev 255625) @@ -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 + Deleted: community-x86_64/fwupdate.install =================================================================== --- community-x86_64/fwupdate.install 2017-09-04 00:02:35 UTC (rev 255624) +++ community-x86_64/fwupdate.install 2017-09-04 00:03:40 UTC (rev 255625) @@ -1,11 +0,0 @@ -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/fwupdate.install (from rev 255624, fwupdate/trunk/fwupdate.install) =================================================================== --- community-x86_64/fwupdate.install (rev 0) +++ community-x86_64/fwupdate.install 2017-09-04 00:03:40 UTC (rev 255625) @@ -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 +}