RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm/ CHANGES rpm/lib/ signature.c rpm/rpmio/ getpass.c

From: Jeff Johnson <jbj@rpm5.org>
Date: Fri 24 Aug 2007 - 23:07:47 CEST
Message-Id: <20070824210747.26E9134845B@rpm5.org>
  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
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.