RPM Package Manager, CVS Repository
http://rpm5.org/cvs/
____________________________________________________________________________
Server: rpm5.org Name: Jeff Johnson
Root: /v/rpm/cvs Email: jbj@rpm5.org
Module: rpm Date: 24-Aug-2007 23:07:47
Branch: HEAD Handle: 2007082422074600
Modified files:
rpm CHANGES
rpm/lib signature.c
rpm/rpmio getpass.c
Log:
use keyutils @p process keyring to store private key password for gpg.
Summary:
Revision Changes Path
1.1600 +1 -1 rpm/CHANGES
2.182 +14 -12 rpm/lib/signature.c
1.6 +2 -2 rpm/rpmio/getpass.c
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: rpm/CHANGES
============================================================================
$ cvs diff -u -r1.1599 -r1.1600 CHANGES
--- rpm/CHANGES 24 Aug 2007 20:18:28 -0000 1.1599
+++ rpm/CHANGES 24 Aug 2007 21:07:46 -0000 1.1600
@@ -1,5 +1,5 @@
4.5 -> 5.0:
- - jbj: use keyutils to get password out of rpm's address space. disabled.
+ - jbj: use keyutils to get password out of rpm's address space.
- jbj: start ripping availablePackages.
- jbj: rpmtsDbmode() and rpmtsSetDbmode() added for rpmts-py.c opaqueness.
- jbj: start marking availablePackages for destruction.
@@ .
patch -p0 <<'@@ .'
Index: rpm/lib/signature.c
============================================================================
$ cvs diff -u -r2.181 -r2.182 signature.c
--- rpm/lib/signature.c 24 Aug 2007 20:18:28 -0000 2.181
+++ rpm/lib/signature.c 24 Aug 2007 21:07:46 -0000 2.182
@@ -570,15 +570,16 @@
delMacro(NULL, "__plaintext_filename");
delMacro(NULL, "__signature_filename");
-#if defined(XXX_HAVE_KEYUTILS_H)
+#if defined(HAVE_KEYUTILS_H)
if (!strcmp(passPhrase, "@u user rpm:passwd")) {
- key_serial_t key, keyring = KEY_SPEC_USER_KEYRING;
+ key_serial_t keyring = KEY_SPEC_PROCESS_KEYRING;
+ long key;
int xx;
- if ((key = keyctl_search(keyring, "user", "rpm:passwd", 0) != 0)
- && (xx = keyctl_read_alloc(key, (void **)&pw)) < 0) {
- rpmError(RPMERR_SIGGEN, _("Failed %s(%d): %s\n"),
- "keyctl_read_alloc", xx, strerror(errno));
+ key = keyctl_search(keyring, "user", "rpm:passwd", 0);
+ if ((xx = keyctl_read_alloc(key, (void **)&pw)) < 0) {
+ rpmError(RPMERR_SIGGEN, _("Failed %s(%d) key(0x%lx): %s\n"),
+ "keyctl_read_alloc of key", xx, key, strerror(errno));
return 1;
}
} else
@@ -931,15 +932,16 @@
}
}
-#if defined(XXX_HAVE_KEYUTILS_H)
+#if defined(HAVE_KEYUTILS_H)
if (!strcmp(passPhrase, "@u user rpm:passwd")) {
- key_serial_t key, keyring = KEY_SPEC_USER_KEYRING;
+ long key;
+ key_serial_t keyring = KEY_SPEC_PROCESS_KEYRING;
int xx;
- if ((key = keyctl_search(keyring, "user", "rpm:passwd", 0) != 0)
- && (xx = keyctl_read_alloc(key, (void **)&pw)) < 0) {
- rpmError(RPMERR_SIGGEN, _("Failed %s(%d): %s\n"),
- "keyctl_read_alloc", xx, strerror(errno));
+ key = keyctl_search(keyring, "user", "rpm:passwd", 0);
+ if ((xx = keyctl_read_alloc(key, (void **)&pw)) < 0) {
+ rpmError(RPMERR_SIGGEN, _("Failed %s(%d) key(0x%lx): %s\n"),
+ "keyctl_read_alloc of key", xx, key, strerror(errno));
return 1;
}
} else
@@ .
patch -p0 <<'@@ .'
Index: rpm/rpmio/getpass.c
============================================================================
$ cvs diff -u -r1.5 -r1.6 getpass.c
--- rpm/rpmio/getpass.c 24 Aug 2007 20:18:29 -0000 1.5
+++ rpm/rpmio/getpass.c 24 Aug 2007 21:07:46 -0000 1.6
@@ -18,10 +18,10 @@
pw = getpass( prompt ? prompt : "" );
/*@=unrecog@*/
-#if defined(XXX_HAVE_KEYUTILS_H)
+#if defined(HAVE_KEYUTILS_H)
if (pw && *pw) {
size_t npw = strlen(pw);
- int keyring = KEY_SPEC_USER_KEYRING;
+ key_serial_t keyring = KEY_SPEC_PROCESS_KEYRING;
(void) add_key("user", "rpm:passwd", pw, npw, keyring);
(void) memset(pw, 0, npw); /* burn the password */
pw = "@u user rpm:passwd";
@@ .
Received on Fri Aug 24 23:07:47 2007