gpg: Warn about (but don't fail) on scdaemon options in gpg.conf.
authorDaniel Kahn Gillmor <dkg@fifthhorseman.net>
Thu, 25 Sep 2014 18:45:37 +0000 (14:45 -0400)
committerWerner Koch <wk@gnupg.org>
Thu, 25 Sep 2014 20:05:29 +0000 (22:05 +0200)
* g10/gpg.c: Add config options that should belong in scdaemon.conf
* g10/main.h, g10/misc.c (obsolete_scdaemon_option): New.

--

In gpg2, the following options are only relevant for scdaemon:

 reader-port
 ctapi-driver
 pcsc-driver
 disable-ccid

but in gpg1, they are options for gpg itself.

Some users of gpg1 might have these options in their
~/.gnupg/gpg.conf, which causes gpg2 to fail hard if it reads that
config file.

gpg2 should not fail hard, though giving a warning (and suggesting a
move to scdaemon.conf) seems OK.

This patch does *not* reintroduce any documentation for these options
in gpg.texi, even to indicate that they are "dummy" options, since
scdaemon.texi contains the appropriate documentation.

Debian-bug-id: 762844

- Program names factored out from obsolete_scdaemon_option to make
  reuse without new translations easier. -wk

g10/gpg.c
g10/main.h
g10/misc.c

index a9d248d..4bb8ef6 100644 (file)
--- a/g10/gpg.c
+++ b/g10/gpg.c
@@ -366,6 +366,10 @@ enum cmd_and_opt_values
     oKeyidFormat,
     oExitOnStatusWriteError,
     oLimitCardInsertTries,
+    oReaderPort,
+    octapiDriver,
+    opcscDriver,
+    oDisableCCID,
     oRequireCrossCert,
     oNoRequireCrossCert,
     oAutoKeyLocate,
@@ -788,6 +792,12 @@ static ARGPARSE_OPTS opts[] = {
   ARGPARSE_s_s (oAutoKeyLocate, "auto-key-locate", "@"),
   ARGPARSE_s_n (oNoAutoKeyLocate, "no-auto-key-locate", "@"),
 
+  /* Dummy options with warnings.  */
+  ARGPARSE_s_s (oReaderPort, "reader-port", "@"),
+  ARGPARSE_s_s (octapiDriver, "ctapi-driver", "@"),
+  ARGPARSE_s_s (opcscDriver, "pcsc-driver", "@"),
+  ARGPARSE_s_n (oDisableCCID, "disable-ccid", "@"),
+
   /* Dummy options.  */
   ARGPARSE_s_n (oNoop, "sk-comments", "@"),
   ARGPARSE_s_n (oNoop, "no-sk-comments", "@"),
@@ -2351,6 +2361,23 @@ main (int argc, char **argv)
            obsolete_option (configname, configlineno, "--gpg-agent-info");
             break;
 
+          case oReaderPort:
+           obsolete_scdaemon_option (configname, configlineno,
+                                      "--reader-port");
+            break;
+          case octapiDriver:
+           obsolete_scdaemon_option (configname, configlineno,
+                                      "--ctapi-driver");
+            break;
+          case opcscDriver:
+           obsolete_scdaemon_option (configname, configlineno,
+                                      "--pcsc-driver");
+            break;
+          case oDisableCCID:
+           obsolete_scdaemon_option (configname, configlineno,
+                                      "--disable-ccid");
+            break;
+
          case oAnswerYes: opt.answer_yes = 1; break;
          case oAnswerNo: opt.answer_no = 1; break;
          case oKeyring: append_to_strlist( &nrings, pargs.r.ret_str); break;
index 44c4478..ad528b4 100644 (file)
@@ -136,6 +136,8 @@ void deprecated_warning(const char *configname,unsigned int configlineno,
 void deprecated_command (const char *name);
 void obsolete_option (const char *configname, unsigned int configlineno,
                       const char *name);
+void obsolete_scdaemon_option (const char *configname,
+                               unsigned int configlineno, const char *name);
 
 int string_to_cipher_algo (const char *string);
 int string_to_digest_algo (const char *string);
index 54c2f89..fa04387 100644 (file)
@@ -1043,6 +1043,20 @@ obsolete_option (const char *configname, unsigned int configlineno,
 }
 
 
+void
+obsolete_scdaemon_option (const char *configname, unsigned int configlineno,
+                          const char *name)
+{
+  if (configname)
+    log_info (_("%s:%u: \"%s\" is obsolete in this file"
+                " - it only has effect in %s\n"),
+              configname, configlineno, name, SCDAEMON_NAME EXTSEP_S "conf");
+  else
+    log_info (_("WARNING: \"%s\" is an obsolete option"
+                " - it has no effect except on %s\n"), name, SCDAEMON_NAME);
+}
+
+
 /*
  * Wrapper around gcry_cipher_map_name to provide a fallback using the
  * "Sn" syntax as used by the preference strings.