[Pkg-gnupg-commit] [gnupg2] 70/159: g10: Allow relative path for specifying the file for bkuptocard.

Daniel Kahn Gillmor dkg at fifthhorseman.net
Wed Jan 27 13:23:55 UTC 2016


This is an automated email from the git hooks/post-receive script.

dkg pushed a commit to branch master
in repository gnupg2.

commit ee433d2b00c93b5a4e4ed54b9fb5806361df1b71
Author: NIIBE Yutaka <gniibe at fsij.org>
Date:   Thu Dec 24 10:41:23 2015 +0900

    g10: Allow relative path for specifying the file for bkuptocard.
    
    * g10/keyedit.c (keyedit_menu): Assume the file is under GNUPGHOME.
    Also support tilda expansion.
---
 g10/keyedit.c | 44 +++++++++++++++++++++++++++-----------------
 1 file changed, 27 insertions(+), 17 deletions(-)

diff --git a/g10/keyedit.c b/g10/keyedit.c
index 15500ef..cfbbed7 100644
--- a/g10/keyedit.c
+++ b/g10/keyedit.c
@@ -1927,17 +1927,23 @@ keyedit_menu (ctrl_t ctrl, const char *username, strlist_t locusr,
 	       backup key as generated by the card generation, parse
 	       that key and store it on card. */
 	    KBNODE node;
-	    const char *fname;
+	    char *fname;
 	    PACKET *pkt;
 	    IOBUF a;
 
-	    fname = arg_string;
-	    if (!*fname)
+            if (!*arg_string)
 	      {
 		tty_printf (_("Command expects a filename argument\n"));
 		break;
 	      }
 
+            if (*arg_string == DIRSEP_C)
+              fname = xstrdup (arg_string);
+            else if (*arg_string == '~')
+              fname = make_filename (arg_string, NULL);
+            else
+              fname = make_filename (opt.homedir, arg_string, NULL);
+
 	    /* Open that file.  */
 	    a = iobuf_open (fname);
 	    if (a && is_secured_file (iobuf_get_fd (a)))
@@ -1946,12 +1952,13 @@ keyedit_menu (ctrl_t ctrl, const char *username, strlist_t locusr,
 		a = NULL;
 		gpg_err_set_errno (EPERM);
 	      }
-	    if (!a)
-	      {
-		tty_printf (_("Can't open '%s': %s\n"),
-			    fname, strerror (errno));
-		break;
-	      }
+            if (!a)
+              {
+                tty_printf (_("Can't open '%s': %s\n"),
+                            fname, strerror (errno));
+                xfree (fname);
+                break;
+              }
 
 	    /* Parse and check that file.  */
 	    pkt = xmalloc (sizeof *pkt);
@@ -1962,14 +1969,17 @@ keyedit_menu (ctrl_t ctrl, const char *username, strlist_t locusr,
 	    if (!err && pkt->pkttype != PKT_SECRET_KEY
 		&& pkt->pkttype != PKT_SECRET_SUBKEY)
 	      err = GPG_ERR_NO_SECKEY;
-	    if (err)
-	      {
-		tty_printf (_("Error reading backup key from '%s': %s\n"),
-			    fname, gpg_strerror (err));
-		free_packet (pkt);
-		xfree (pkt);
-		break;
-	      }
+            if (err)
+              {
+                tty_printf (_("Error reading backup key from '%s': %s\n"),
+                            fname, gpg_strerror (err));
+                xfree (fname);
+                free_packet (pkt);
+                xfree (pkt);
+                break;
+              }
+
+	    xfree (fname);
 	    node = new_kbnode (pkt);
 
 	    if (cmd == cmdCHECKBKUPKEY)

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gnupg/gnupg2.git



More information about the Pkg-gnupg-commit mailing list