]> granicus.if.org Git - sudo/commitdiff
Overload -h option to specify an optional hostname for remote access.
authorTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 16 Jul 2013 22:31:05 +0000 (16:31 -0600)
committerTodd C. Miller <Todd.Miller@courtesan.com>
Tue, 16 Jul 2013 22:31:05 +0000 (16:31 -0600)
This is future-proofing; no policy plugins currently support this.

include/sudo_plugin.h
src/parse_args.c
src/sudo_usage.h.in

index 6cab9597b76c1d2d9f1a708595109db71f47bb13..deabf0c0515387105cae200d9df546f179f36063 100644 (file)
@@ -19,7 +19,7 @@
 
 /* API version major/minor */
 #define SUDO_API_VERSION_MAJOR 1
-#define SUDO_API_VERSION_MINOR 3
+#define SUDO_API_VERSION_MINOR 4
 #define SUDO_API_MKVERSION(x, y) ((x << 16) | y)
 #define SUDO_API_VERSION SUDO_API_MKVERSION(SUDO_API_VERSION_MAJOR, SUDO_API_VERSION_MINOR)
 
index 819e432fec70bd59f0f9d06a373b54db8eb8c287..56aab32f9f0fcde29adba46c3e196c15b9c8feb9 100644 (file)
@@ -111,7 +111,9 @@ static struct sudo_settings {
     { "max_groups" },
 #define ARG_PLUGIN_DIR 21
     { "plugin_dir" },
-#define NUM_SETTINGS 22
+#define ARG_REMOTE_HOST 22
+    { "remote_host" },
+#define NUM_SETTINGS 23
     { NULL }
 };
 
@@ -181,7 +183,7 @@ parse_args(int argc, char **argv, int *nargc, char ***nargv, char ***settingsp,
         * Some trickiness is required to allow environment variables
         * to be interspersed with command line options.
         */
-       if ((ch = getopt(argc, argv, "+Aa:bC:c:D:Eeg:HhiKklnPp:r:Sst:U:u:Vv")) != -1) {
+       if ((ch = getopt(argc, argv, "+Aa:bC:c:D:Eeg:Hh::iKklnPp:r:Sst:U:u:Vv")) != -1) {
            switch (ch) {
                case 'A':
                    SET(tgetpass_flags, TGP_ASKPASS);
@@ -227,12 +229,16 @@ parse_args(int argc, char **argv, int *nargc, char ***nargv, char ***settingsp,
                    sudo_settings[ARG_SET_HOME].value = "true";
                    break;
                case 'h':
-                   if (mode && mode != MODE_HELP) {
-                       if (strcmp(getprogname(), "sudoedit") != 0)
-                           usage_excl(1);
+                   if (optarg != NULL) {
+                       sudo_settings[ARG_REMOTE_HOST].value = optarg;
+                   } else {
+                       if (mode && mode != MODE_HELP) {
+                           if (strcmp(getprogname(), "sudoedit") != 0)
+                               usage_excl(1);
+                       }
+                       mode = MODE_HELP;
+                       valid_flags = 0;
                    }
-                   mode = MODE_HELP;
-                   valid_flags = 0;
                    break;
                case 'i':
                    sudo_settings[ARG_LOGIN_SHELL].value = "true";
index 4f6288b30aaf41b037bc4a45f248649f67e0445e..b781988033092b724ed1e34ff7e2cdc72d28aca0 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007-2010 Todd C. Miller <Todd.Miller@courtesan.com>
+ * Copyright (c) 2007-2010, 2013 Todd C. Miller <Todd.Miller@courtesan.com>
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
  * need to be able to substitute values from configure.
  */
 #define SUDO_USAGE1 " [-D level] -h | -K | -k | -V"
-#define SUDO_USAGE2 " -v [-AknS] @BSDAUTH_USAGE@[-D level] [-g groupname|#gid] [-p prompt] [-u user name|#uid]"
-#define SUDO_USAGE3 " -l[l] [-AknS] @BSDAUTH_USAGE@[-D level] [-g groupname|#gid] [-p prompt] [-U user name] [-u user name|#uid] [-g groupname|#gid] [command]"
-#define SUDO_USAGE4 " [-AbEHknPS] @BSDAUTH_USAGE@@SELINUX_USAGE@[-C fd] [-D level] @LOGINCAP_USAGE@[-g groupname|#gid] [-p prompt] [-u user name|#uid] [-g groupname|#gid] [VAR=value] [-i|-s] [<command>]"
-#define SUDO_USAGE5 " -e [-AknS] @BSDAUTH_USAGE@@SELINUX_USAGE@[-C fd] [-D level] @LOGINCAP_USAGE@[-g groupname|#gid] [-p prompt] [-u user name|#uid] file ..."
+#define SUDO_USAGE2 " -v [-AknS] @BSDAUTH_USAGE@[-D level] [-g groupname|#gid] [-h hostname] [-p prompt] [-u user name|#uid]"
+#define SUDO_USAGE3 " -l[l] [-AknS] @BSDAUTH_USAGE@[-D level] [-g groupname|#gid] [-h hostname] [-p prompt] [-U user name] [-u user name|#uid] [command]"
+#define SUDO_USAGE4 " [-AbEHknPS] @BSDAUTH_USAGE@@SELINUX_USAGE@[-C fd] [-D level] @LOGINCAP_USAGE@[-g groupname|#gid] [-h hostname] [-p prompt] [-u user name|#uid] [VAR=value] [-i|-s] [<command>]"
+#define SUDO_USAGE5 " -e [-AknS] @BSDAUTH_USAGE@@SELINUX_USAGE@[-C fd] [-D level] @LOGINCAP_USAGE@[-g groupname|#gid] [-h hostname] [-p prompt] [-u user name|#uid] file ..."
 
 /*
  * Configure script arguments used to build sudo.