Bug#758525: Acknowledgement ([patch] Please allow a alternative policy directory)

2014-08-19 Thread Michael Vogt
My previous patch contained a missing instance of DEBSIG_KEYRINGS_FMT,
I'm sorry for that. Attached is a updated version.
From f2e7429cbc583d878f369498984729c7dc67126b Mon Sep 17 00:00:00 2001
From: Michael Vogt m...@ubuntu.com
Date: Mon, 18 Aug 2014 15:55:41 +0200
Subject: [PATCH] Add a new --rootdir commandline option to allow a different
 rootdir

This option allows to verify against a alternative policy location.
Useful for testing or verification as non-root user.
---
 debian/changelog |  6 ++
 debsig-verify.c  | 13 ++---
 debsig.h |  5 +++--
 gpg-parse.c  |  4 ++--
 4 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 8967e8d..2d5aca1 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+debsig-verify (0.10.1) UNRELEASED; urgency=low
+
+  * add --rootdir option to use a alternative root directory
+
+ -- Michael Vogt michael.v...@ubuntu.com  Mon, 18 Aug 2014 15:41:53 +0200
+
 debsig-verify (0.10) unstable; urgency=low
 
   * Add exit status codes to the man page.
diff --git a/debsig-verify.c b/debsig-verify.c
index a09f534..4319caf 100644
--- a/debsig-verify.c
+++ b/debsig-verify.c
@@ -34,6 +34,7 @@
 #include debsig.h
 
 char originID[2048];
+char *rootdir = ;
 
 char *deb = NULL;
 FILE *deb_fs = NULL;
@@ -286,7 +287,8 @@ Usage: %s [ options ] deb\n\n\
'Selection' block of the policies only.\n\
--use-policy name Used in conjunction with the above\n\
option. This allows you to specify the\n\
-   short name of the policy you wish to try.\n,
+   short name of the policy you wish to try.\n\
+   --rootdir dir Use a alternative root directory for policy lookup\n,
 	dpkg_get_progname());
 exit(1);
 }
@@ -347,6 +349,12 @@ int main(int argc, char *argv[]) {
 		ds_printf(DS_LEV_ERR, --use-policy requires an argument);
 		outputUsage();
 	}
+	} else if (!strcmp(argv[i], --rootdir)) {
+	rootdir = argv[++i];
+	if (i == argc || rootdir[0] == '-') {
+		ds_printf(DS_LEV_ERR, --rootdir requires an argument);
+		outputUsage();
+	}
 	} else
 	outputUsage();
 }
@@ -371,8 +379,7 @@ int main(int argc, char *argv[]) {
 strncpy(originID, tmpID, sizeof(originID));
 
 /* Now we have an ID, let's check the policy to use */
-
-snprintf(buf, sizeof(buf) - 1, DEBSIG_POLICIES_DIR_FMT, originID);
+snprintf(buf, sizeof(buf) - 1, DEBSIG_POLICIES_DIR_FMT, rootdir, originID);
 if ((pd = opendir(buf)) == NULL)
 	ds_fail_printf(DS_FAIL_UNKNOWN_ORIGIN,
 		   Could not open Origin dir %s: %s\n, buf, strerror(errno));
diff --git a/debsig.h b/debsig.h
index 3c492b0..1b81681 100644
--- a/debsig.h
+++ b/debsig.h
@@ -17,8 +17,8 @@
  * along with this program.  If not, see https://www.gnu.org/licenses/.
  */
 
-#define DEBSIG_POLICIES_DIR_FMT DEBSIG_POLICIES_DIR/%s
-#define DEBSIG_KEYRINGS_FMT DEBSIG_KEYRINGS_DIR/%s/%s
+#define DEBSIG_POLICIES_DIR_FMT %sDEBSIG_POLICIES_DIR/%s
+#define DEBSIG_KEYRINGS_FMT %sDEBSIG_KEYRINGS_DIR/%s/%s
 
 #define GPG_PROG /usr/bin/gpg
 
@@ -93,3 +93,4 @@ extern int ds_debug_level;
 extern FILE *deb_fs;
 extern char *deb;
 extern char originID[];
+extern char *rootdir;
diff --git a/gpg-parse.c b/gpg-parse.c
index bae2181..ab450af 100644
--- a/gpg-parse.c
+++ b/gpg-parse.c
@@ -56,7 +56,7 @@ char *getKeyID (const struct match *mtc) {
 gpg_init();
 
 snprintf(buf, sizeof(buf) - 1, GPG_PROG GPG_ARGS_FMT --list-packets -q DEBSIG_KEYRINGS_FMT,
-	 GPG_ARGS, originID, mtc-file);
+	 GPG_ARGS, rootdir, originID, mtc-file);
 
 if ((ds = popen(buf, r)) == NULL) {
 	perror(gpg);
@@ -180,7 +180,7 @@ int gpgVerify(const char *data, struct match *mtc, const char *sig) {
 
 gpg_init();
 
-snprintf(keyring, sizeof(keyring) - 1, DEBSIG_KEYRINGS_FMT, originID, mtc-file);
+snprintf(keyring, sizeof(keyring) - 1, DEBSIG_KEYRINGS_FMT, rootdir, originID, mtc-file);
 if (stat(keyring, st)) {
 	ds_printf(DS_LEV_DEBUG, gpgVerify: could not stat %s, keyring);
 	return 0;
-- 
2.0.0.rc0



Bug#758525: Acknowledgement ([patch] Please allow a alternative policy directory)

2014-08-19 Thread Guillem Jover
Hi!

On Tue, 2014-08-19 at 09:42:03 +0200, Michael Vogt wrote:
 My previous patch contained a missing instance of DEBSIG_KEYRINGS_FMT,
 I'm sorry for that. Attached is a updated version.

No problem. The patch looks good, I've merged locally and it will be
included in my next upload.

Thanks,
Guillem


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org



Bug#758525: Acknowledgement ([patch] Please allow a alternative policy directory)

2014-08-19 Thread Guillem Jover
Heya!

On Tue, 2014-08-19 at 09:42:03 +0200, Michael Vogt wrote:
 My previous patch contained a missing instance of DEBSIG_KEYRINGS_FMT,
 I'm sorry for that. Attached is a updated version.

I just renamed the option to just --root to be consistent with dpkg.
And noticed the missing entry in the man page, so added that too.

Thanks,
Guillem


-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org