On Tue, 10 Jan 2012 13:26:47 -0500
Jeff Layton <[email protected]> wrote:

> This was actually requested by the Red Hat QA group, who sometimes work
> with multiple krb5.conf files when testing.
> 
> Requested-by: Marko Myllynen <[email protected]>
> Signed-off-by: Jeff Layton <[email protected]>
> ---
>  cifs.upcall.8.in |    8 +++++++-
>  cifs.upcall.c    |   13 ++++++++++---
>  2 files changed, 17 insertions(+), 4 deletions(-)
> 
> diff --git a/cifs.upcall.8.in b/cifs.upcall.8.in
> index 0d79a99..3ae0562 100644
> --- a/cifs.upcall.8.in
> +++ b/cifs.upcall.8.in
> @@ -22,7 +22,7 @@
>  cifs.upcall \- Userspace upcall helper for Common Internet File System (CIFS)
>  .SH "SYNOPSIS"
>  .HP \w'\ 'u
> -cifs\&.upcall [\-\-trust\-dns|\-t] [\-\-version|\-v] [\-\-legacy\-uid|\-l] 
> {keyid}
> +cifs\&.upcall [\-\-trust\-dns|\-t] [\-\-version|\-v] [\-\-legacy\-uid|\-l] 
> [--krb5conf=/path/to/krb5.conf|-k /path/to/...] {keyid}
>  .SH "DESCRIPTION"
>  .PP
>  This tool is part of the cifs-utils suite\&.
> @@ -38,6 +38,12 @@ for a particular key type\&. While it can be run directly 
> from the command\-line
>  This option is deprecated and is currently ignored\&.
>  .RE
>  .PP
> +\--krb5conf=/path/to/krb5.conf|-k /path/to/krb5.conf
> +.RS 4
> +This option allows administrators to set an alternate location for the
> +krb5.conf file that cifs.upcall will use.
> +.RE
> +.PP
>  \-\-trust\-dns|\-t
>  .RS 4
>  With krb5 upcalls, the name used as the host portion of the service 
> principal defaults to the hostname portion of the UNC\&. This option allows 
> the upcall program to reverse resolve the network address of the server in 
> order to get the hostname\&.
> diff --git a/cifs.upcall.c b/cifs.upcall.c
> index f560d21..0d222cb 100644
> --- a/cifs.upcall.c
> +++ b/cifs.upcall.c
> @@ -759,12 +759,13 @@ lowercase_string(char *c)
>  
>  static void usage(void)
>  {
> -     fprintf(stderr, "Usage: %s [-t] [-v] [-l] key_serial\n", prog);
> +     fprintf(stderr, "Usage: %s [-k /path/to/krb5.conf] [-t] [-v] [-l] 
> key_serial\n", prog);
>  }
>  
>  const struct option long_options[] = {
> -     {"trust-dns", 0, NULL, 't'},
> +     {"krb5conf", 1, NULL, 'k'},
>       {"legacy-uid", 0, NULL, 'l'},
> +     {"trust-dns", 0, NULL, 't'},
>       {"version", 0, NULL, 'v'},
>       {NULL, 0, NULL, 0}
>  };
> @@ -792,7 +793,7 @@ int main(const int argc, char *const argv[])
>  
>       openlog(prog, 0, LOG_DAEMON);
>  
> -     while ((c = getopt_long(argc, argv, "cltv", long_options, NULL)) != -1) 
> {
> +     while ((c = getopt_long(argc, argv, "ck:ltv", long_options, NULL)) != 
> -1) {
>               switch (c) {
>               case 'c':
>                       /* legacy option -- skip it */
> @@ -800,6 +801,12 @@ int main(const int argc, char *const argv[])
>               case 't':
>                       try_dns++;
>                       break;
> +             case 'k':
> +                     if (setenv("KRB5_CONFIG", optarg, 1) != 0) {
> +                             syslog(LOG_ERR, "unable to set $KRB5_CONFIG: 
> %d", errno);
> +                             goto out;
> +                     }
> +                     break;
>               case 'l':
>                       legacy_uid++;
>                       break;

Oops -- note that this is a patch to cifs.upcall.c in cifs-utils. The
"cifs:" makes it look like a kernel patch, but it isn't...

-- 
Jeff Layton <[email protected]>
--
To unsubscribe from this list: send the line "unsubscribe linux-cifs" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to