From 85d8dbc475a2cfbf7a1557de51f8bd35fa8ff5d6 Mon Sep 17 00:00:00 2001 From: overweight <5324761+overweight@user.noreply.gitee.com> Date: Mon, 30 Sep 2019 11:04:46 -0400 Subject: [PATCH] Package init --- 0.3.0.tar.gz | Bin 0 -> 31804 bytes 0001-Fix-the-potential-buffer-overflow.patch | 36 +++++++ ...-Fix-the-32bit-signedness-comparison.patch | 34 ++++++ ...t-wchar-so-toggle-passwords-work-rig.patch | 42 ++++++++ ...low-sha1-on-the-mokutil-command-line.patch | 32 ++++++ 0005-Make-all-efi_guid_t-const.patch | 87 ++++++++++++++++ ...plicit-about-file-modes-in-all-cases.patch | 37 +++++++ 0007-Add-bash-completion-file.patch | 98 ++++++++++++++++++ mokutil.spec | 69 ++++++++++++ 9 files changed, 435 insertions(+) create mode 100644 0.3.0.tar.gz create mode 100644 0001-Fix-the-potential-buffer-overflow.patch create mode 100644 0002-Fix-the-32bit-signedness-comparison.patch create mode 100644 0003-Build-with-fshort-wchar-so-toggle-passwords-work-rig.patch create mode 100644 0004-Don-t-allow-sha1-on-the-mokutil-command-line.patch create mode 100644 0005-Make-all-efi_guid_t-const.patch create mode 100644 0006-mokutil-be-explicit-about-file-modes-in-all-cases.patch create mode 100644 0007-Add-bash-completion-file.patch create mode 100644 mokutil.spec diff --git a/0.3.0.tar.gz b/0.3.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..900847b1dcd9d37bfcc394089639c49ea0b876c3 GIT binary patch literal 31804 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 literal 0 HcmV?d00001 diff --git a/0001-Fix-the-potential-buffer-overflow.patch b/0001-Fix-the-potential-buffer-overflow.patch new file mode 100644 index 0000000..ef8518f --- /dev/null +++ b/0001-Fix-the-potential-buffer-overflow.patch @@ -0,0 +1,36 @@ +From 1313fa02a5b2bfe61ee6702696600fc148ec2d6e Mon Sep 17 00:00:00 2001 +From: Gary Ching-Pang Lin +Date: Tue, 4 Nov 2014 15:50:03 +0800 +Subject: [PATCH 1/7] Fix the potential buffer overflow + +Signed-off-by: Gary Ching-Pang Lin +--- + src/mokutil.c | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/src/mokutil.c b/src/mokutil.c +index 5b34f22..93fb6fa 100644 +--- a/src/mokutil.c ++++ b/src/mokutil.c +@@ -1743,7 +1743,7 @@ set_toggle (const char * VarName, uint32_t state) + MokToggleVar tvar; + char *password = NULL; + unsigned int pw_len; +- efi_char16_t efichar_pass[SB_PASSWORD_MAX]; ++ efi_char16_t efichar_pass[SB_PASSWORD_MAX+1]; + int ret = -1; + + printf ("password length: %d~%d\n", SB_PASSWORD_MIN, SB_PASSWORD_MAX); +@@ -1757,8 +1757,7 @@ set_toggle (const char * VarName, uint32_t state) + efichar_from_char (efichar_pass, password, + SB_PASSWORD_MAX * sizeof(efi_char16_t)); + +- memcpy(tvar.password, efichar_pass, +- SB_PASSWORD_MAX * sizeof(efi_char16_t)); ++ memcpy(tvar.password, efichar_pass, sizeof(tvar.password)); + + tvar.mok_toggle_state = state; + +-- +2.7.4 + diff --git a/0002-Fix-the-32bit-signedness-comparison.patch b/0002-Fix-the-32bit-signedness-comparison.patch new file mode 100644 index 0000000..de24b1c --- /dev/null +++ b/0002-Fix-the-32bit-signedness-comparison.patch @@ -0,0 +1,34 @@ +From cdb4b6f3bfd6ada6558ddfb889e27150f0841b28 Mon Sep 17 00:00:00 2001 +From: Gary Ching-Pang Lin +Date: Mon, 24 Nov 2014 11:38:54 +0800 +Subject: [PATCH 2/7] Fix the 32bit signedness comparison + +--- + src/mokutil.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/mokutil.c b/src/mokutil.c +index 93fb6fa..a7e83f7 100644 +--- a/src/mokutil.c ++++ b/src/mokutil.c +@@ -1284,7 +1284,7 @@ issue_mok_request (char **files, uint32_t total, MokRequest req, + + /* Mok */ + read_size = read (fd, ptr, sizes[i]); +- if (read_size < 0 || read_size != sizes[i]) { ++ if (read_size < 0 || read_size != (int64_t)sizes[i]) { + fprintf (stderr, "Failed to read %s\n", files[i]); + goto error; + } +@@ -1645,7 +1645,7 @@ export_moks () + goto error; + } + +- while (offset < list[i].mok_size) { ++ while (offset < (int64_t)list[i].mok_size) { + write_size = write (fd, list[i].mok + offset, + list[i].mok_size - offset); + if (write_size < 0) { +-- +2.7.4 + diff --git a/0003-Build-with-fshort-wchar-so-toggle-passwords-work-rig.patch b/0003-Build-with-fshort-wchar-so-toggle-passwords-work-rig.patch new file mode 100644 index 0000000..80a677a --- /dev/null +++ b/0003-Build-with-fshort-wchar-so-toggle-passwords-work-rig.patch @@ -0,0 +1,42 @@ +From 9eb111a7f7b897ba4ae19a68708e010a5c384260 Mon Sep 17 00:00:00 2001 +From: Peter Jones +Date: Fri, 19 Jun 2015 16:53:36 -0400 +Subject: [PATCH 3/7] Build with -fshort-wchar so toggle passwords work right. + +This source tree uses: + +typedef wchar_t efi_char16_t; + +to define UEFI's UCS-2 character type. On many platforms, wchar_t is +32-bits by default. As a result, efichar_from_char winds up writing +4-byte characters instead of 2-byte characters. In the case where we +hash the password in mokutil, this works fine, because the same datatype +is used, and the values are the same. But for our feature toggles, +where we store the raw data and shim is interpretting the character +array, every other character winds up being L'\0', and verification +fails. + +So always build with -fshort-wchar to ensure we get 2-byte character +storage. + +Signed-off-by: Peter Jones +--- + configure.ac | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/configure.ac b/configure.ac +index fe28fb9..69d412a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -37,7 +37,7 @@ else + default_strict=no + fi + +-WARNINGFLAGS_C="$WARNINGFLAGS_C -std=gnu11" ++WARNINGFLAGS_C="$WARNINGFLAGS_C -std=gnu11 -fshort-wchar" + + AC_ARG_ENABLE(strict, AS_HELP_STRING([--enable-strict],[Enable strict compilation options]), enable_strict=$enableval, + enable_strict=$default_strict) +-- +2.7.4 + diff --git a/0004-Don-t-allow-sha1-on-the-mokutil-command-line.patch b/0004-Don-t-allow-sha1-on-the-mokutil-command-line.patch new file mode 100644 index 0000000..3e75fda --- /dev/null +++ b/0004-Don-t-allow-sha1-on-the-mokutil-command-line.patch @@ -0,0 +1,32 @@ +From ecc8fb0d92f0f453414a98172df22e23fb5893f5 Mon Sep 17 00:00:00 2001 +From: Peter Jones +Date: Tue, 16 Jun 2015 17:06:30 -0400 +Subject: [PATCH 4/7] Don't allow sha1 on the mokutil command line. + +Related: rhbz#1115843 + +Signed-off-by: Peter Jones +--- + src/mokutil.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/mokutil.c b/src/mokutil.c +index a7e83f7..1fb34f9 100644 +--- a/src/mokutil.c ++++ b/src/mokutil.c +@@ -1351,10 +1351,12 @@ identify_hash_type (const char *hash_str, efi_guid_t *type) + } + + switch (len) { ++#if 0 + case SHA_DIGEST_LENGTH*2: + *type = efi_guid_sha1; + hash_size = SHA_DIGEST_LENGTH; + break; ++#endif + case SHA224_DIGEST_LENGTH*2: + *type = efi_guid_sha224; + hash_size = SHA224_DIGEST_LENGTH; +-- +2.7.4 + diff --git a/0005-Make-all-efi_guid_t-const.patch b/0005-Make-all-efi_guid_t-const.patch new file mode 100644 index 0000000..0e12a37 --- /dev/null +++ b/0005-Make-all-efi_guid_t-const.patch @@ -0,0 +1,87 @@ +From eba569a8e6c33f07042758cbfa1706d7339464e1 Mon Sep 17 00:00:00 2001 +From: Gary Lin +Date: Wed, 13 Jan 2016 16:05:21 +0800 +Subject: [PATCH 5/7] Make all efi_guid_t const + +All UEFI GUIDs defined in efivar are const. Declare all of them const +to make gcc happy. + +Signed-off-by: Gary Lin +--- + src/mokutil.c | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/src/mokutil.c b/src/mokutil.c +index 1fb34f9..d2c52b4 100644 +--- a/src/mokutil.c ++++ b/src/mokutil.c +@@ -200,7 +200,7 @@ efichar_from_char (efi_char16_t *dest, const char *src, size_t dest_len) + } + + static uint32_t +-efi_hash_size (efi_guid_t *hash_type) ++efi_hash_size (const efi_guid_t *hash_type) + { + if (efi_guid_cmp (hash_type, &efi_guid_sha1) == 0) { + return SHA_DIGEST_LENGTH; +@@ -218,7 +218,7 @@ efi_hash_size (efi_guid_t *hash_type) + } + + static uint32_t +-signature_size (efi_guid_t *hash_type) ++signature_size (const efi_guid_t *hash_type) + { + uint32_t hash_size; + +@@ -439,7 +439,7 @@ list_keys (uint8_t *data, size_t data_size) + + /* match the hash in the hash array and return the index if matched */ + static int +-match_hash_array (efi_guid_t *hash_type, const void *hash, ++match_hash_array (const efi_guid_t *hash_type, const void *hash, + const void *hash_array, const uint32_t array_size) + { + uint32_t hash_size, hash_count; +@@ -469,8 +469,8 @@ match_hash_array (efi_guid_t *hash_type, const void *hash, + } + + static int +-delete_data_from_list (efi_guid_t *var_guid, const char *var_name, +- efi_guid_t *type, void *data, uint32_t data_size) ++delete_data_from_list (const efi_guid_t *var_guid, const char *var_name, ++ const efi_guid_t *type, void *data, uint32_t data_size) + { + uint8_t *var_data = NULL; + size_t var_data_size = 0; +@@ -1006,8 +1006,8 @@ is_valid_cert (void *cert, uint32_t cert_size) + } + + static int +-is_duplicate (efi_guid_t *type, const void *data, const uint32_t data_size, +- efi_guid_t *vendor, const char *db_name) ++is_duplicate (const efi_guid_t *type, const void *data, const uint32_t data_size, ++ const efi_guid_t *vendor, const char *db_name) + { + uint8_t *var_data; + size_t var_data_size; +@@ -1059,7 +1059,7 @@ done: + } + + static int +-is_valid_request (efi_guid_t *type, void *mok, uint32_t mok_size, ++is_valid_request (const efi_guid_t *type, void *mok, uint32_t mok_size, + MokRequest req) + { + switch (req) { +@@ -1096,7 +1096,7 @@ is_valid_request (efi_guid_t *type, void *mok, uint32_t mok_size, + } + + static int +-in_pending_request (efi_guid_t *type, void *data, uint32_t data_size, ++in_pending_request (const efi_guid_t *type, void *data, uint32_t data_size, + MokRequest req) + { + uint8_t *authvar_data; +-- +2.7.4 + diff --git a/0006-mokutil-be-explicit-about-file-modes-in-all-cases.patch b/0006-mokutil-be-explicit-about-file-modes-in-all-cases.patch new file mode 100644 index 0000000..a0d87f3 --- /dev/null +++ b/0006-mokutil-be-explicit-about-file-modes-in-all-cases.patch @@ -0,0 +1,37 @@ +From b68dca2d4de779387c4b5306bb9cfc9a3bab2572 Mon Sep 17 00:00:00 2001 +From: Peter Jones +Date: Tue, 14 Jun 2016 10:19:43 -0400 +Subject: [PATCH 6/7] mokutil: be explicit about file modes in all cases. + +Signed-off-by: Peter Jones +--- + src/mokutil.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +diff --git a/src/mokutil.c b/src/mokutil.c +index d2c52b4..d554f6c 100644 +--- a/src/mokutil.c ++++ b/src/mokutil.c +@@ -574,7 +574,8 @@ delete_data_from_list (const efi_guid_t *var_guid, const char *var_name, + | EFI_VARIABLE_BOOTSERVICE_ACCESS + | EFI_VARIABLE_RUNTIME_ACCESS; + ret = efi_set_variable (*var_guid, var_name, +- var_data, total, attributes); ++ var_data, total, attributes, ++ S_IRUSR | S_IWUSR); + if (ret < 0) { + fprintf (stderr, "Failed to write variable \"%s\": %m\n", + var_name); +@@ -938,7 +939,8 @@ update_request (void *new_list, int list_len, MokRequest req, + data_size = list_len; + + if (efi_set_variable (efi_guid_shim, req_name, +- data, data_size, attributes) < 0) { ++ data, data_size, attributes, ++ S_IRUSR | S_IWUSR) < 0) { + switch (req) { + case ENROLL_MOK: + fprintf (stderr, "Failed to enroll new keys\n"); +-- +2.7.4 + diff --git a/0007-Add-bash-completion-file.patch b/0007-Add-bash-completion-file.patch new file mode 100644 index 0000000..725ad66 --- /dev/null +++ b/0007-Add-bash-completion-file.patch @@ -0,0 +1,98 @@ +From d16c76d139f9a9a56b49c0dd51cd9056f626031e Mon Sep 17 00:00:00 2001 +From: Peter Jones +Date: Tue, 14 Jun 2016 10:20:14 -0400 +Subject: [PATCH 7/7] Add bash completion file. + +Signed-off-by: Peter Jones +--- + Makefile.am | 5 +++++ + configure.ac | 17 +++++++++++++++++ + data/mokutil | 37 +++++++++++++++++++++++++++++++++++++ + 3 files changed, 59 insertions(+) + create mode 100755 data/mokutil + +diff --git a/Makefile.am b/Makefile.am +index 9f0d419..c17cc4a 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -1 +1,6 @@ + SUBDIRS = src man ++ ++if ENABLE_BASH_COMPLETION ++ bashcompletiondir = $(BASH_COMPLETION_DIR) ++ dist_bashcompletion_DATA = data/mokutil ++endif +diff --git a/configure.ac b/configure.ac +index 69d412a..7b52a06 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -86,6 +86,23 @@ AC_CHECK_FUNCS([memset]) + PKG_CHECK_MODULES(OPENSSL, [openssl >= 0.9.8]) + PKG_CHECK_MODULES(EFIVAR, [efivar >= 0.12]) + ++AC_ARG_WITH([bash-completion-dir], ++ AS_HELP_STRING([--with-bash-completion-dir[=PATH]], ++ [Install the bash auto-completion script in this directory. @<:@default=yes@:>@]), ++ [], ++ [with_bash_completion_dir=yes]) ++ ++if test "x$with_bash_completion_dir" = "xyes"; then ++ PKG_CHECK_MODULES([BASH_COMPLETION], [bash-completion >= 2.0], ++ [BASH_COMPLETION_DIR="`pkg-config --variable=completionsdir bash-completion`"], ++ [BASH_COMPLETION_DIR="$datadir/bash-completion/completions"]) ++else ++ BASH_COMPLETION_DIR="$with_bash_completion_dir" ++fi ++ ++AC_SUBST([BASH_COMPLETION_DIR]) ++AM_CONDITIONAL([ENABLE_BASH_COMPLETION],[test "x$with_bash_completion_dir" != "xno"]) ++ + AC_CONFIG_FILES([Makefile + src/Makefile + man/Makefile]) +diff --git a/data/mokutil b/data/mokutil +new file mode 100755 +index 0000000..800b039 +--- /dev/null ++++ b/data/mokutil +@@ -0,0 +1,37 @@ ++#!/bin/bash ++ ++_mokutil() ++{ ++ local cur=${COMP_WORDS[COMP_CWORD]} ++ ++ if [[ "$cur" == -* ]]; then ++ #COMPREPLY=( $( compgen -W "--help --list-enrolled --list-new --list-delete --import --delete --revoke-import --revoke-delete --export --password --clear-password --disable-validation --enable-validation --sb-state --test-key --reset --generate-hash --hash-file --root-pw --simple-hash" -- $cur ) ) ++ COMPREPLY=( $( compgen -W '$( _parse_help "$1" --long-help ) -h -l -N -D -i -d -x -p -c -t -f -g -P -s -X' -- "$cur" ) ) ++ [[ $COMPREPLY == *= ]] && compopt -o nospace ++ return 0 ++ fi ++ ++ case "${COMP_WORDS[COMP_CWORD-1]}" in ++ --import|-i|--delete|-d|--test-key|-t|--hash-file|-f) ++ _filedir ++ return 0 ++ ;; ++ --import-hash|--delete-hash) ++ COMPREPLY=( $( compgen -W "" ) ) ++ return 0 ++ ;; ++ --set-verbosity) ++ COMPREPLY=( $( compgen -W "true false") ) ++ return 0 ++ ;; ++ --generate-hash|-g) ++ COMPREPLY=( $( compgen -o nospace -P= -W "") ) ++ return 0 ++ ;; ++ *) ++ return 0 ++ ;; ++ esac ++} ++ ++complete -F _mokutil mokutil +-- +2.7.4 + diff --git a/mokutil.spec b/mokutil.spec new file mode 100644 index 0000000..0d7b5bd --- /dev/null +++ b/mokutil.spec @@ -0,0 +1,69 @@ +Name: mokutil +Version: 0.3.0 +Release: 11 +Epoch: 1 +Summary: Tools for manipulating machine owner keys +License: GPLv3+ +URL: https://github.com/lcp/mokutil +Source0: https://github.com/lcp/mokutil/archive/%{version}.tar.gz + +Patch0001: 0001-Fix-the-potential-buffer-overflow.patch +Patch0002: 0002-Fix-the-32bit-signedness-comparison.patch +Patch0003: 0003-Build-with-fshort-wchar-so-toggle-passwords-work-rig.patch +Patch0004: 0004-Don-t-allow-sha1-on-the-mokutil-command-line.patch +Patch0005: 0005-Make-all-efi_guid_t-const.patch +Patch0006: 0006-mokutil-be-explicit-about-file-modes-in-all-cases.patch +Patch0007: 0007-Add-bash-completion-file.patch + +BuildRequires:gcc autoconf automake gnu-efi git openssl-devel openssl efivar-devel >= 31-1 git +Conflicts: shim < 0.8-1 +Obsoletes: mokutil < 0.2.0 + +%description +The utility to manipulate machines owner keys which managed in shim. + +%package help +Summary: Documents for %{name} +Buildarch: noarch +Requires: man info + +%description help +Man page and other related documents for %{name}. + +%prep +%autosetup -n %{name}-%{version} -p1 -Sgit + +%build +./autogen.sh +%configure +make %{?_smp_mflags} + +%install +rm -rf %{buildroot} +%make_install + +%check +make check + +%pre + +%preun + +%post + +%postun + +%files +%defattr(-,root,root) +%license COPYING +%{_bindir}/mokutil +%{_datadir}/bash-completion/completions/mokutil + +%files help +%defattr(-,root,root) +%doc README +%{_mandir}/man1/* + +%changelog +* Fri Aug 23 2019 openEuler Buildteam - 1:0.3.0-11 +- Package init