diff options
author | Russ Allbery <rra@stanford.edu> | 2008-04-24 02:02:49 +0000 |
---|---|---|
committer | Russ Allbery <rra@stanford.edu> | 2008-04-24 02:02:49 +0000 |
commit | 92ff7f21ad0b167f8d742a9d7b5f93704a57619c (patch) | |
tree | 7adae5f227b6463e07d5cd0f1dab82b7f1c6be47 /client | |
parent | 34c58f9471b3df4fa8b719b3c3534940ba5cfe1b (diff) |
Major coding style cleanup. Updated all shared code from my other
projects.
The configure option requesting AFS kaserver support (and thus
building kasetkey) is now --with-kaserver instead of --with-afs.
If KRB5_CONFIG was explicitly set in the environment, don't use a
different krb5-config based on --with-krb4 or --with-krb5. If
krb5-config isn't executable, don't use it. This allows one to
force library probing by setting KRB5_CONFIG to point to a
nonexistent file.
Sanity-check the results of krb5-config before proceeding and error
out in configure if they don't work.
Stop setting Stanford-specific compile-time defaults for the wallet
server and port.
Diffstat (limited to 'client')
-rw-r--r-- | client/file.c | 46 | ||||
-rw-r--r-- | client/internal.h | 102 | ||||
-rw-r--r-- | client/keytab.c | 44 | ||||
-rw-r--r-- | client/krb5.c | 32 | ||||
-rw-r--r-- | client/remctl.c | 43 | ||||
-rw-r--r-- | client/srvtab.c | 41 | ||||
-rw-r--r-- | client/wallet.c | 82 |
7 files changed, 203 insertions, 187 deletions
diff --git a/client/file.c b/client/file.c index 10304e5..7e0563e 100644 --- a/client/file.c +++ b/client/file.c @@ -1,15 +1,15 @@ -/* $Id$ -** -** File handling for the wallet client. -** -** Written by Russ Allbery <rra@stanford.edu> -** Copyright 2007, 2008 Board of Trustees, Leland Stanford Jr. University -** -** See LICENSE for licensing terms. -*/ +/* $Id$ + * + * File handling for the wallet client. + * + * Written by Russ Allbery <rra@stanford.edu> + * Copyright 2007, 2008 Board of Trustees, Leland Stanford Jr. University + * + * See LICENSE for licensing terms. + */ #include <config.h> -#include <system.h> +#include <portable/system.h> #include <fcntl.h> @@ -17,9 +17,9 @@ #include <util/util.h> /* -** Given a filename, some data, and a length, write that data to the given -** file safely, but overwrite any existing file by that name. -*/ + * Given a filename, some data, and a length, write that data to the given + * file safely, but overwrite any existing file by that name. + */ void overwrite_file(const char *name, const void *data, size_t length) { @@ -45,10 +45,10 @@ overwrite_file(const char *name, const void *data, size_t length) /* -** Given a filename, some data, and a length, write that data to the given -** file safely and atomically by creating file.new, writing the data, linking -** file to file.bak, and then renaming file.new to file. -*/ + * Given a filename, some data, and a length, write that data to the given + * file safely and atomically by creating file.new, writing the data, linking + * file to file.bak, and then renaming file.new to file. + */ void write_file(const char *name, const void *data, size_t length) { @@ -72,12 +72,12 @@ write_file(const char *name, const void *data, size_t length) /* -** Given a remctl object, the command prefix, object type, and object name, -** and a file (which may be NULL), send a wallet get command and write the -** results to the provided file. If the file is NULL, write the results to -** standard output instead. Returns 0 on success and an exit status on -** failure. -*/ + * Given a remctl object, the command prefix, object type, and object name, + * and a file (which may be NULL), send a wallet get command and write the + * results to the provided file. If the file is NULL, write the results to + * standard output instead. Returns 0 on success and an exit status on + * failure. + */ int get_file(struct remctl *r, const char *prefix, const char *type, const char *name, const char *file) diff --git a/client/internal.h b/client/internal.h index ba17b73..64fad04 100644 --- a/client/internal.h +++ b/client/internal.h @@ -1,49 +1,47 @@ -/* $Id$ -** -** Internal support functions for the wallet client. -** -** Written by Russ Allbery <rra@stanford.edu> -** Copyright 2007, 2008 Board of Trustees, Leland Stanford Jr. University -** -** See LICENSE for licensing terms. -*/ +/* $Id$ + * + * Internal support functions for the wallet client. + * + * Written by Russ Allbery <rra@stanford.edu> + * Copyright 2007, 2008 Board of Trustees, Leland Stanford Jr. University + * + * See LICENSE for licensing terms. + */ #ifndef CLIENT_INTERNAL_H #define CLIENT_INTERNAL_H 1 +#include <portable/macros.h> + #include <krb5.h> #include <sys/types.h> -#include <util/util.h> - /* Forward declarations to avoid unnecessary includes. */ struct remctl; -/* Temporary until we have some real configuration. */ -#ifndef WALLET_SERVER -# define WALLET_SERVER "wallet.stanford.edu" -#endif -#ifndef WALLET_PORT -# define WALLET_PORT 0 -#endif - BEGIN_DECLS -/* Given a Kerberos context and a principal name, obtain Kerberos credentials - for that principal and store them in a memory cache for use by later - operations. */ +/* + * Given a Kerberos context and a principal name, obtain Kerberos credentials + * for that principal and store them in a memory cache for use by later + * operations. + */ void kinit(krb5_context, const char *principal); -/* Given a remctl object, run a remctl command. If data is non-NULL, saves - the standard output from the command into data with the length in length. - Otherwise, prints it to standard output. Either way, prints standard error - output and errors to standard error and returns the exit status or 255 for - a remctl internal error. */ +/* + * Given a remctl object, run a remctl command. If data is non-NULL, saves + * the standard output from the command into data with the length in length. + * Otherwise, prints it to standard output. Either way, prints standard error + * output and errors to standard error and returns the exit status or 255 for + * a remctl internal error. + */ int run_command(struct remctl *, const char **command, char **data, size_t *length); -/* Check whether an object exists using the exists wallet interface. Returns - true if it does, false if it doesn't, and dies on remctl errors. */ +/* + * Check whether an object exists using the exists wallet interface. Returns + * true if it does, false if it doesn't, and dies on remctl errors. + */ int object_exists(struct remctl *, const char *prefix, const char *type, const char *name); @@ -51,34 +49,44 @@ int object_exists(struct remctl *, const char *prefix, const char *type, void object_autocreate(struct remctl *, const char *prefix, const char *type, const char *name); -/* Given a remctl object, the type for the wallet interface, object type, - object name, and a file (which may be NULL), send a wallet get command and - write the results to the provided file. If the file is NULL, write the - results to standard output instead. Returns 0 on success and an exit - status on failure. */ +/* + * Given a remctl object, the type for the wallet interface, object type, + * object name, and a file (which may be NULL), send a wallet get command and + * write the results to the provided file. If the file is NULL, write the + * results to standard output instead. Returns 0 on success and an exit + * status on failure. + */ int get_file(struct remctl *, const char *prefix, const char *type, const char *name, const char *file); -/* Given a remctl object, the Kerberos context, the type for the wallet - interface, the name of a keytab object, and a file name, call the correct - wallet commands to download a keytab and write it to that file. If srvtab - is not NULL, write a srvtab based on the keytab after a successful - download. */ +/* + * Given a remctl object, the Kerberos context, the type for the wallet + * interface, the name of a keytab object, and a file name, call the correct + * wallet commands to download a keytab and write it to that file. If srvtab + * is not NULL, write a srvtab based on the keytab after a successful + * download. + */ int get_keytab(struct remctl *, krb5_context, const char *type, const char *name, const char *file, const char *srvtab); -/* Given a filename, some data, and a length, write that data to the given - file with error checking, overwriting any existing contents. */ +/* + * Given a filename, some data, and a length, write that data to the given + * file with error checking, overwriting any existing contents. + */ void overwrite_file(const char *name, const void *data, size_t length); -/* Given a filename, some data, and a length, write that data to the given - file safely and atomically by creating file.new, writing the data, linking - file to file.bak, and then renaming file.new to file. */ +/* + * Given a filename, some data, and a length, write that data to the given + * file safely and atomically by creating file.new, writing the data, linking + * file to file.bak, and then renaming file.new to file. + */ void write_file(const char *name, const void *data, size_t length); -/* Given a Kerberos context, a srvtab file, the Kerberos v5 principal, and the - keytab file, write a srvtab file for the corresponding Kerberos v4 - principal. */ +/* + * Given a Kerberos context, a srvtab file, the Kerberos v5 principal, and the + * keytab file, write a srvtab file for the corresponding Kerberos v4 + * principal. + */ void write_srvtab(krb5_context, const char *srvtab, const char *principal, const char *keytab); diff --git a/client/keytab.c b/client/keytab.c index 872cd48..eb37ec1 100644 --- a/client/keytab.c +++ b/client/keytab.c @@ -1,15 +1,15 @@ -/* $Id$ -** -** Implementation of keytab handling for the wallet client. -** -** Written by Russ Allbery <rra@stanford.edu> -** Copyright 2007, 2008 Board of Trustees, Leland Stanford Jr. University -** -** See LICENSE for licensing terms. -*/ +/* $Id$ + * + * Implementation of keytab handling for the wallet client. + * + * Written by Russ Allbery <rra@stanford.edu> + * Copyright 2007, 2008 Board of Trustees, Leland Stanford Jr. University + * + * See LICENSE for licensing terms. + */ #include <config.h> -#include <system.h> +#include <portable/system.h> #include <remctl.h> @@ -18,11 +18,11 @@ /* -** Given keytab data as a pointer to memory and a length and the path of a -** second keytab, merge the keys in the memory keytab into the file keytab. -** Currently, this doesn't do any cleanup of old kvnos and doesn't handle -** duplicate kvnos correctly. Dies on any error. -*/ + * Given keytab data as a pointer to memory and a length and the path of a + * second keytab, merge the keys in the memory keytab into the file keytab. + * Currently, this doesn't do any cleanup of old kvnos and doesn't handle + * duplicate kvnos correctly. Dies on any error. + */ static void merge_keytab(krb5_context ctx, const char *newfile, const char *file) { @@ -61,9 +61,9 @@ merge_keytab(krb5_context ctx, const char *newfile, const char *file) /* -** Configure a given keytab to be synchronized with an AFS kaserver if it -** isn't already. Returns true on success, false on failure. -*/ + * Configure a given keytab to be synchronized with an AFS kaserver if it + * isn't already. Returns true on success, false on failure. + */ static int set_sync(struct remctl *r, const char *type, const char *name) { @@ -94,10 +94,10 @@ set_sync(struct remctl *r, const char *type, const char *name) /* -** Given a remctl object, the Kerberos context, the name of a keytab object, -** and a file name, call the correct wallet commands to download a keytab and -** write it to that file. Returns the setatus or 255 on an internal error. -*/ + * Given a remctl object, the Kerberos context, the name of a keytab object, + * and a file name, call the correct wallet commands to download a keytab and + * write it to that file. Returns the setatus or 255 on an internal error. + */ int get_keytab(struct remctl *r, krb5_context ctx, const char *type, const char *name, const char *file, const char *srvtab) diff --git a/client/krb5.c b/client/krb5.c index 606cbb9..fd600da 100644 --- a/client/krb5.c +++ b/client/krb5.c @@ -1,17 +1,17 @@ -/* $Id$ -** -** Kerberos support functions for the wallet client. -** -** Currently, the only function here is one to obtain a ticket cache for a -** given principal and store it in memory for use by the rest of the wallet -** client. -** -** Written by Russ Allbery <rra@stanford.edu> -** Copyright 2007, 2008 Board of Trustees, Leland Stanford Jr. University -*/ +/* $Id$ + * + * Kerberos support functions for the wallet client. + * + * Currently, the only function here is one to obtain a ticket cache for a + * given principal and store it in memory for use by the rest of the wallet + * client. + * + * Written by Russ Allbery <rra@stanford.edu> + * Copyright 2007, 2008 Board of Trustees, Leland Stanford Jr. University + */ #include <config.h> -#include <system.h> +#include <portable/system.h> #include <krb5.h> @@ -23,10 +23,10 @@ /* -** Given a Kerberos context and a principal name, authenticate as that user -** and store the TGT in a memory ticket cache for later use by remctl. Dies -** on failure. -*/ + * Given a Kerberos context and a principal name, authenticate as that user + * and store the TGT in a memory ticket cache for later use by remctl. Dies + * on failure. + */ void kinit(krb5_context ctx, const char *principal) { diff --git a/client/remctl.c b/client/remctl.c index 74e2cf5..8b9702a 100644 --- a/client/remctl.c +++ b/client/remctl.c @@ -1,15 +1,15 @@ -/* $Id$ -** -** remctl interface for the wallet client. -** -** Written by Russ Allbery <rra@stanford.edu> -** Copyright 2007 Board of Trustees, Leland Stanford Jr. University -** -** See LICENSE for licensing terms. -*/ +/* $Id$ + * + * remctl interface for the wallet client. + * + * Written by Russ Allbery <rra@stanford.edu> + * Copyright 2007 Board of Trustees, Leland Stanford Jr. University + * + * See LICENSE for licensing terms. + */ #include <config.h> -#include <system.h> +#include <portable/system.h> #include <remctl.h> @@ -18,13 +18,12 @@ /* -** Given a remctl connection and a command, run the command. -** -** If data is non-NULL, save the output in it and return the length in -** length. Otherwise, send any output to stdout. Either way, send error -** output to stderr, and return the exit status (or 255 if there is an -** error). -*/ + * Given a remctl connection and a command, run the command. + * + * If data is non-NULL, save the output in it and return the length in length. + * Otherwise, send any output to stdout. Either way, send error output to + * stderr, and return the exit status (or 255 if there is an error). + */ int run_command(struct remctl *r, const char **command, char **data, size_t *length) @@ -75,9 +74,9 @@ run_command(struct remctl *r, const char **command, char **data, /* -** Check whether an object exists using the exists wallet interface. Returns -** true if it does, false if it doesn't, and dies on remctl errors. -*/ + * Check whether an object exists using the exists wallet interface. Returns + * true if it does, false if it doesn't, and dies on remctl errors. + */ int object_exists(struct remctl *r, const char *prefix, const char *type, const char *name) @@ -101,8 +100,8 @@ object_exists(struct remctl *r, const char *prefix, const char *type, /* -** Attempt autocreation of an object. Dies if autocreation fails. -*/ + * Attempt autocreation of an object. Dies if autocreation fails. + */ void object_autocreate(struct remctl *r, const char *prefix, const char *type, const char *name) diff --git a/client/srvtab.c b/client/srvtab.c index b454720..2e4ea2d 100644 --- a/client/srvtab.c +++ b/client/srvtab.c @@ -1,15 +1,15 @@ -/* $Id$ -** -** Implementation of srvtab handling for the wallet client. -** -** Written by Russ Allbery <rra@stanford.edu> -** Copyright 2007, 2008 Board of Trustees, Leland Stanford Jr. University -** -** See LICENSE for licensing terms. -*/ +/* $Id$ + * + * Implementation of srvtab handling for the wallet client. + * + * Written by Russ Allbery <rra@stanford.edu> + * Copyright 2007, 2008 Board of Trustees, Leland Stanford Jr. University + * + * See LICENSE for licensing terms. + */ #include <config.h> -#include <system.h> +#include <portable/system.h> #include <krb5.h> @@ -24,16 +24,17 @@ /* -** Given the Kerberos context, srvtab file name, a Kerberos principal (as a -** string), and a keytab file name, extract the des-cbc-crc key from that -** keytab and write it to the newly created srvtab file as a srvtab. Convert -** the principal from Kerberos v5 form to Kerberos v4 form. -** -** We always force the kvno to 0 for the srvtab. This works with how the -** wallet synchronizes keys, even though it's not particularly correct. -** -** On any failure, print an error message to standard error and then exit. -*/ + * Given the Kerberos context, srvtab file name, a Kerberos principal (as a + * string), and a keytab file name, extract the des-cbc-crc key from that + * keytab and write it to the newly created srvtab file as a srvtab. Convert + * the principal from Kerberos v5 form to Kerberos v4 form. + * + * We always force the kvno to 0 for the srvtab. This works with how the + * wallet synchronizes keys with kasetkey, even though it's not particularly + * correct. + * + * On any failure, print an error message to standard error and then exit. + */ void write_srvtab(krb5_context ctx, const char *srvtab, const char *principal, const char *keytab) diff --git a/client/wallet.c b/client/wallet.c index 2e4f755..2995cf6 100644 --- a/client/wallet.c +++ b/client/wallet.c @@ -1,16 +1,16 @@ -/* $Id$ -** -** The client program for the wallet system. -** -** Written by Russ Allbery <rra@stanford.edu> -** Copyright 2006, 2007, 2008 -** Board of Trustees, Leland Stanford Jr. University -** -** See LICENSE for licensing terms. -*/ +/* $Id$ + * + * The client program for the wallet system. + * + * Written by Russ Allbery <rra@stanford.edu> + * Copyright 2006, 2007, 2008 + * Board of Trustees, Leland Stanford Jr. University + * + * See LICENSE for licensing terms. + */ #include <config.h> -#include <system.h> +#include <portable/system.h> #include <errno.h> #include <krb5.h> @@ -19,9 +19,11 @@ #include <client/internal.h> #include <util/util.h> -/* Basic wallet behavior options set either on the command line or via - krb5.conf. If set via krb5.conf, we allocate memory for the strings, but - we never free them. */ +/* + * Basic wallet behavior options set either on the command line or via + * krb5.conf. If set via krb5.conf, we allocate memory for the strings, but + * we never free them. + */ struct options { char *type; char *server; @@ -30,8 +32,10 @@ struct options { int port; }; -/* Allow defaults to be set for a particular site with configure options if - people don't want to use krb5.conf for some reason. */ +/* + * Allow defaults to be set for a particular site with configure options if + * people don't want to use krb5.conf for some reason. + */ #ifndef WALLET_SERVER # define WALLET_SERVER NULL #endif @@ -51,25 +55,26 @@ Options:\n\ -h Display this help\n\ -p <port> Port of server (default: %d, if zero, remctl default)\n\ -S <srvtab> For the get keytab command, srvtab output file\n\ - -s <server> Server hostname (default: " WALLET_SERVER ")\n\ + -s <server> Server hostname (default: %s)\n\ -v Display the version of wallet\n"; /* -** Display the usage message for remctl. -*/ + * Display the usage message for remctl. + */ static void usage(int status) { - fprintf((status == 0) ? stdout : stderr, usage_message, WALLET_PORT); + fprintf((status == 0) ? stdout : stderr, usage_message, WALLET_PORT, + (WALLET_SERVER == NULL) ? "<none>" : WALLET_SERVER); exit(status); } /* -** Load a string option from Kerberos appdefaults. This requires an annoying -** workaround because one cannot specify a default value of NULL. -*/ + * Load a string option from Kerberos appdefaults. This requires an annoying + * workaround because one cannot specify a default value of NULL. + */ static void default_string(krb5_context ctx, const char *opt, const char *defval, char **result) @@ -85,9 +90,9 @@ default_string(krb5_context ctx, const char *opt, const char *defval, /* -** Load a number option from Kerberos appdefaults. The native interface -** doesn't support numbers, so we actually read a string and then convert. -*/ + * Load a number option from Kerberos appdefaults. The native interface + * doesn't support numbers, so we actually read a string and then convert. + */ static void default_number(krb5_context ctx, const char *opt, int defval, int *result) { @@ -104,10 +109,10 @@ default_number(krb5_context ctx, const char *opt, int defval, int *result) /* -** Set option defaults and then get krb5.conf configuration, if any, and -** override the defaults. Later, command-line options will override those -** defaults. -*/ + * Set option defaults and then get krb5.conf configuration, if any, and + * override the defaults. Later, command-line options will override those + * defaults. + */ static void set_defaults(krb5_context ctx, struct options *options) { @@ -120,9 +125,8 @@ set_defaults(krb5_context ctx, struct options *options) /* -** Main routine. Parse the arguments and then perform the desired -** operation. -*/ + * Main routine. Parse the arguments and then perform the desired operation. + */ int main(int argc, char *argv[]) { @@ -200,8 +204,10 @@ main(int argc, char *argv[]) die("-S option requires -f also be used"); } - /* If no server was set at configure time and none was set on the command - line or with krb5.conf settings, we can't continue. */ + /* + * If no server was set at configure time and none was set on the command + * line or with krb5.conf settings, we can't continue. + */ if (options.server == NULL) die("no server specified in krb5.conf or with -s"); @@ -216,8 +222,10 @@ main(int argc, char *argv[]) if (!remctl_open(r, options.server, options.port, options.principal)) die("%s", remctl_error(r)); - /* Most commands, we handle ourselves, but get and store commands are - special and keytab get commands with -f are doubly special. */ + /* + * Most commands, we handle ourselves, but get and store commands are + * special and keytab get commands with -f are doubly special. + */ if (strcmp(argv[0], "get") == 0 || strcmp(argv[0], "store") == 0) { if (!object_exists(r, options.type, argv[1], argv[2])) object_autocreate(r, options.type, argv[1], argv[2]); |