diff options
| author | Robert Yang <liezhi.yang@windriver.com> | 2016-03-21 02:25:49 -0700 |
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2016-03-25 10:29:14 +0000 |
| commit | 05d7e0db5d1de2643284edf7fccaf47616145bd6 (patch) | |
| tree | 388e20e55a61ca1bc6cb36fb759fec2ea8420c95 | |
| parent | 13a31b15ec2467120a2efb30a9486ce789516b21 (diff) | |
| download | poky-05d7e0db5d1de2643284edf7fccaf47616145bd6.tar.gz | |
rpm: check _gpg_passphrase before ask for input
rpm always asked for pass phrasae when add signature, which made it
can't work non-interactively, this patch fix the problem. It will work
non-interactively if _gpg_passphrase is defined, and work as before if
not.
(From OE-Core rev: 3cd4f96e94d8756d332b13215ce3ac2e1eaddee7)
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
| -rw-r--r-- | meta/recipes-devtools/rpm/rpm/rpmqv.c-check-_gpg_passphrase-before-ask-for-input.patch | 70 | ||||
| -rw-r--r-- | meta/recipes-devtools/rpm/rpm_5.4.16.bb | 1 |
2 files changed, 71 insertions, 0 deletions
diff --git a/meta/recipes-devtools/rpm/rpm/rpmqv.c-check-_gpg_passphrase-before-ask-for-input.patch b/meta/recipes-devtools/rpm/rpm/rpmqv.c-check-_gpg_passphrase-before-ask-for-input.patch new file mode 100644 index 0000000000..c68681c1ed --- /dev/null +++ b/meta/recipes-devtools/rpm/rpm/rpmqv.c-check-_gpg_passphrase-before-ask-for-input.patch | |||
| @@ -0,0 +1,70 @@ | |||
| 1 | From bb48dbc88a58bc05a43d71a3375fb05358119ec5 Mon Sep 17 00:00:00 2001 | ||
| 2 | From: Robert Yang <liezhi.yang@windriver.com> | ||
| 3 | Date: Sun, 20 Mar 2016 20:20:16 -0700 | ||
| 4 | Subject: [PATCH] rpmqv.c: check _gpg_passphrase before ask for input | ||
| 5 | |||
| 6 | rpm always asked for pass phrasae when add signature, which made it | ||
| 7 | can't work non-interactively, this patch fix the problem. It will work | ||
| 8 | non-interactively if _gpg_passphrase is defined, and work as before if | ||
| 9 | not. | ||
| 10 | |||
| 11 | Upstream-Status: Pending | ||
| 12 | |||
| 13 | Signed-off-by: Robert Yang <liezhi.yang@windriver.com> | ||
| 14 | --- | ||
| 15 | macros/macros.in | 7 +++++-- | ||
| 16 | rpmqv.c | 17 ++++++++++------- | ||
| 17 | 2 files changed, 15 insertions(+), 9 deletions(-) | ||
| 18 | |||
| 19 | diff --git a/macros/macros.in b/macros/macros.in | ||
| 20 | index 2e5b07d..01b3aad 100644 | ||
| 21 | --- a/macros/macros.in | ||
| 22 | +++ b/macros/macros.in | ||
| 23 | @@ -520,15 +520,18 @@ $_arbitrary_tags_tests Foo:Bar | ||
| 24 | # Macro(s) to hold the arguments passed to GPG/PGP for package | ||
| 25 | # signing and verification. | ||
| 26 | # | ||
| 27 | + | ||
| 28 | +%_gpg_passphrase_way %{?_gpg_passphrase:--passphrase "%{_gpg_passphrase}"}%{!?_gpg_passphrase:--passphrase-fd 3} | ||
| 29 | + | ||
| 30 | %__gpg_check_password_cmd %{__gpg} \ | ||
| 31 | - gpg --batch --no-verbose --passphrase-fd 3 -u "%{_gpg_name}" -so - | ||
| 32 | + gpg --batch --no-verbose %{_gpg_passphrase_way} -u "%{_gpg_name}" -so - | ||
| 33 | #%__pgp_check_password_cmd %{__pgp} \ | ||
| 34 | # pgp +batchmode=on +verbose=0 "%{_pgp_name}" -sf | ||
| 35 | #%__pgp5_check_password_cmd %{__pgp} \ | ||
| 36 | # pgps +batchmode=on +verbose=0 +armor=off "%{_pgp_name}" -f | ||
| 37 | |||
| 38 | %__gpg_sign_cmd %{__gpg} \ | ||
| 39 | - gpg --batch --no-verbose --no-armor --passphrase-fd 3 --no-secmem-warning \ | ||
| 40 | + gpg --batch --no-verbose --no-armor %{_gpg_passphrase_way} --no-secmem-warning \ | ||
| 41 | -u "%{_gpg_name}" -sbo %{__signature_filename} %{__plaintext_filename} | ||
| 42 | #%__pgp_sign_cmd %{__pgp} \ | ||
| 43 | # pgp +batchmode=on +verbose=0 +armor=off \ | ||
| 44 | diff --git a/rpmqv.c b/rpmqv.c | ||
| 45 | index b306486..7604396 100644 | ||
| 46 | --- a/rpmqv.c | ||
| 47 | +++ b/rpmqv.c | ||
| 48 | @@ -831,13 +831,16 @@ int main(int argc, const char ** argv) | ||
| 49 | #endif | ||
| 50 | ) | ||
| 51 | { | ||
| 52 | - passPhrase = Getpass(_("Enter pass phrase: ")); | ||
| 53 | - if (rpmCheckPassPhrase(passPhrase)) { | ||
| 54 | - fprintf(stderr, _("Pass phrase check failed\n")); | ||
| 55 | - ec = EXIT_FAILURE; | ||
| 56 | - goto exit; | ||
| 57 | + passPhrase = rpmExpand("%{?_gpg_passphrase}", NULL); | ||
| 58 | + if (passPhrase == NULL || passPhrase[0] == '\0') { | ||
| 59 | + passPhrase = Getpass(_("Enter pass phrase: ")); | ||
| 60 | + if (rpmCheckPassPhrase(passPhrase)) { | ||
| 61 | + fprintf(stderr, _("Pass phrase check failed\n")); | ||
| 62 | + ec = EXIT_FAILURE; | ||
| 63 | + goto exit; | ||
| 64 | + } | ||
| 65 | + fprintf(stderr, _("Pass phrase is good.\n")); | ||
| 66 | } | ||
| 67 | - fprintf(stderr, _("Pass phrase is good.\n")); | ||
| 68 | /* XXX Getpass() should realloc instead. */ | ||
| 69 | passPhrase = xstrdup(passPhrase); | ||
| 70 | } | ||
diff --git a/meta/recipes-devtools/rpm/rpm_5.4.16.bb b/meta/recipes-devtools/rpm/rpm_5.4.16.bb index eba043e3af..7621f8ffaa 100644 --- a/meta/recipes-devtools/rpm/rpm_5.4.16.bb +++ b/meta/recipes-devtools/rpm/rpm_5.4.16.bb | |||
| @@ -114,6 +114,7 @@ SRC_URI += " \ | |||
| 114 | file://rpm-python-AddErase.patch \ | 114 | file://rpm-python-AddErase.patch \ |
| 115 | file://rpm-rpmpgp-popt.patch \ | 115 | file://rpm-rpmpgp-popt.patch \ |
| 116 | file://rpm-fix-lua-tests-compilation-failure.patch \ | 116 | file://rpm-fix-lua-tests-compilation-failure.patch \ |
| 117 | file://rpmqv.c-check-_gpg_passphrase-before-ask-for-input.patch \ | ||
| 117 | " | 118 | " |
| 118 | 119 | ||
| 119 | # OE specific changes | 120 | # OE specific changes |
