Module Name:    src
Committed By:   agc
Date:           Tue Jun 30 18:54:20 UTC 2009

Modified Files:
        src/crypto/external/bsd/netpgp/dist/src/netpgp: netpgp.c

Log Message:
Check that a filename has been given, where one has required. Fixes a bug
reported by Mark Kirby.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 \
    src/crypto/external/bsd/netpgp/dist/src/netpgp/netpgp.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/crypto/external/bsd/netpgp/dist/src/netpgp/netpgp.c
diff -u src/crypto/external/bsd/netpgp/dist/src/netpgp/netpgp.c:1.4 src/crypto/external/bsd/netpgp/dist/src/netpgp/netpgp.c:1.5
--- src/crypto/external/bsd/netpgp/dist/src/netpgp/netpgp.c:1.4	Sat Jun 13 05:25:09 2009
+++ src/crypto/external/bsd/netpgp/dist/src/netpgp/netpgp.c	Tue Jun 30 18:54:20 2009
@@ -159,6 +159,17 @@
 		progname, progname, usagemsg);
 }
 
+/* check the file is not NULL */
+static int
+nonnull(char *f, char *progname)
+{
+	if (f == NULL) {
+		(void) fprintf(stderr, "%s: No filename provided\n", progname);
+		return 0;
+	}
+	return 1;
+}
+
 /* do a command once for a specified file 'f' */
 static int
 netpgp_cmd(netpgp_t *netpgp, prog_t *p, char *f)
@@ -167,30 +178,37 @@
 
 	switch (p->cmd) {
 	case ENCRYPT:
-		return netpgp_encrypt_file(netpgp,
+		return nonnull(f, p->progname) &&
+			netpgp_encrypt_file(netpgp,
 					netpgp_getvar(netpgp, "userid"),
 					f, p->output,
 					p->armour);
 	case DECRYPT:
-		return netpgp_decrypt_file(netpgp, f, p->output, p->armour);
+		return nonnull(f, p->progname) &&
+			netpgp_decrypt_file(netpgp, f, p->output, p->armour);
 	case SIGN:
-		return netpgp_sign_file(netpgp,
+		return nonnull(f, p->progname) &&
+			netpgp_sign_file(netpgp,
 					netpgp_getvar(netpgp, "userid"),
 					f, p->output,
 					p->armour, !cleartext, p->detached);
 	case CLEARSIGN:
-		return netpgp_sign_file(netpgp,
+		return nonnull(f, p->progname) &&
+			netpgp_sign_file(netpgp,
 					netpgp_getvar(netpgp, "userid"),
 					f, p->output,
 					p->armour, cleartext, p->detached);
 	case VERIFY:
-		return netpgp_verify_file(netpgp, f, NULL, p->armour);
+		return nonnull(f, p->progname) &&
+			netpgp_verify_file(netpgp, f, NULL, p->armour);
 	case VERIFY_CAT:
-		return netpgp_verify_file(netpgp, f,
+		return nonnull(f, p->progname) &&
+			netpgp_verify_file(netpgp, f,
 					(p->output) ? p->output : "-",
 					p->armour);
 	case LIST_PACKETS:
-		return netpgp_list_packets(netpgp, f, p->armour, NULL);
+		return nonnull(f, p->progname) &&
+			netpgp_list_packets(netpgp, f, p->armour, NULL);
 	case HELP_CMD:
 	default:
 		print_usage(usage, p->progname);

Reply via email to