summaryrefslogtreecommitdiffstats
path: root/src/kadmin
diff options
context:
space:
mode:
authorNicolas Williams <nico@cryptonector.com>2012-09-24 13:38:20 -0500
committerGreg Hudson <ghudson@mit.edu>2012-10-05 14:11:06 -0400
commit91175a8ba034fa95accb39a5341fd296217e6fed (patch)
tree37474a5ea7c0db368a4e5921ef4c35e7da3c8061 /src/kadmin
parentcea0b28045b262b1098f17f17f78b2efbf89a6c1 (diff)
downloadkrb5-91175a8ba034fa95accb39a5341fd296217e6fed.tar.gz
krb5-91175a8ba034fa95accb39a5341fd296217e6fed.tar.xz
krb5-91175a8ba034fa95accb39a5341fd296217e6fed.zip
Add -p, -F, -K options to kadmind
New options: -p path-to-kdb5_util -K path-to-kprop -F dump-file These are needed for testing without first having to install. ticket: 7372
Diffstat (limited to 'src/kadmin')
-rw-r--r--src/kadmin/server/ipropd_svc.c27
-rw-r--r--src/kadmin/server/ovsec_kadmd.c21
2 files changed, 34 insertions, 14 deletions
diff --git a/src/kadmin/server/ipropd_svc.c b/src/kadmin/server/ipropd_svc.c
index ffbd02a95f..6509474ede 100644
--- a/src/kadmin/server/ipropd_svc.c
+++ b/src/kadmin/server/ipropd_svc.c
@@ -35,6 +35,9 @@ extern gss_name_t rqst2name(struct svc_req *rqstp);
extern void *global_server_handle;
extern int nofork;
extern short l_port;
+extern char *kdb5_util;
+extern char *kprop;
+extern char *dump_file;
static char abuf[33];
/* Result is stored in a static buffer and is invalidated by the next call. */
@@ -57,12 +60,12 @@ static char *reply_unknown_str = "<UNKNOWN_CODE>";
#ifdef DPRINT
#undef DPRINT
#endif
-#define DPRINT(i, ...) \
- do { \
- if (nofork) { \
- fprintf(stderr, __VA_ARGS__); \
- fflush(stderr); \
- } \
+#define DPRINT(i, ...) \
+ do { \
+ if (nofork) { \
+ fprintf(stderr, __VA_ARGS__); \
+ fflush(stderr); \
+ } \
} while (0)
@@ -351,7 +354,7 @@ ipropx_resync(uint32_t vers, struct svc_req *rqstp)
* subsequent updates very iprop).
*/
if (asprintf(&ubuf, "%s dump -i%d -c %s",
- KPROPD_DEFAULT_KDB5_UTIL, vers, KPROP_DEFAULT_FILE) < 0) {
+ kdb5_util, vers, dump_file) < 0) {
krb5_klog_syslog(LOG_ERR,
_("%s: cannot construct kdb5 util dump string too long; out of memory"),
whoami);
@@ -406,15 +409,13 @@ ipropx_resync(uint32_t vers, struct svc_req *rqstp)
}
DPRINT("%s: exec `kprop -f %s %s' ...\n",
- whoami, KPROP_DEFAULT_FILE, clhost);
+ whoami, dump_file, clhost);
/* XXX Yuck! */
if (getenv("KPROP_PORT")) {
- pret = execl(KPROP_DEFAULT_FILE, "kprop", "-f",
- KPROP_DEFAULT_FILE, "-P", getenv("KPROP_PORT"),
- clhost, NULL);
+ pret = execl(kprop, "kprop", "-f", dump_file, "-P",
+ getenv("KPROP_PORT"), clhost, NULL);
} else {
- pret = execl(KPROP_DEFAULT_FILE, "kprop", "-f",
- KPROP_DEFAULT_FILE, clhost, NULL);
+ pret = execl(kprop, "kprop", "-f", dump_file, clhost, NULL);
}
perror(whoami);
krb5_klog_syslog(LOG_ERR,
diff --git a/src/kadmin/server/ovsec_kadmd.c b/src/kadmin/server/ovsec_kadmd.c
index b77e765619..60a2afbb9c 100644
--- a/src/kadmin/server/ovsec_kadmd.c
+++ b/src/kadmin/server/ovsec_kadmd.c
@@ -108,7 +108,8 @@ static void usage()
{
fprintf(stderr, _("Usage: kadmind [-x db_args]* [-r realm] [-m] [-nofork] "
"[-port port-number]\n"
- "\t\t[-P pid_file]\n"
+ "\t\t[-p path-to-kdb5_util] [-F dump-file]\n"
+ "\t\t[-K path-to-kprop] [-P pid_file]\n"
"\nwhere,\n\t[-x db_args]* - any number of database "
"specific arguments.\n"
"\t\t\tLook at each database documentation for "
@@ -203,6 +204,9 @@ static krb5_context context;
static krb5_context hctx;
int nofork = 0;
+char *kdb5_util = KPROPD_DEFAULT_KDB5_UTIL;
+char *kprop = KPROPD_DEFAULT_KPROP;
+char *dump_file = KPROP_DEFAULT_FILE;
int main(int argc, char *argv[])
{
@@ -299,6 +303,21 @@ int main(int argc, char *argv[])
pid_file = *argv;
} else if (strcmp(*argv, "-W") == 0) {
strong_random = 0;
+ } else if (strcmp(*argv, "-p") == 0) {
+ argc--; argv++;
+ if (!argc)
+ usage();
+ kdb5_util = *argv;
+ } else if (strcmp(*argv, "-F") == 0) {
+ argc--; argv++;
+ if (!argc)
+ usage();
+ dump_file = *argv;
+ } else if (strcmp(*argv, "-K") == 0) {
+ argc--; argv++;
+ if (!argc)
+ usage();
+ kprop = *argv;
} else
break;
argc--; argv++;