summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNalin Dahyabhai <nalin@fedoraproject.org>2007-05-23 21:46:54 +0000
committerNalin Dahyabhai <nalin@fedoraproject.org>2007-05-23 21:46:54 +0000
commit65b44dedbe4cb4d04a66ae74dd0952ae98c419a2 (patch)
tree75de7da875a85425b16d676862f27c49b9d326b1
parent5aa33883deabaf9578eca25cd60da499231349a1 (diff)
downloadkrb5-65b44dedbe4cb4d04a66ae74dd0952ae98c419a2.tar.gz
krb5-65b44dedbe4cb4d04a66ae74dd0952ae98c419a2.tar.xz
krb5-65b44dedbe4cb4d04a66ae74dd0952ae98c419a2.zip
- experimental patch to ignore empty values for various environment values
-rw-r--r--krb5-1.6.1-empty.patch224
1 files changed, 224 insertions, 0 deletions
diff --git a/krb5-1.6.1-empty.patch b/krb5-1.6.1-empty.patch
new file mode 100644
index 0000000..cfd6b47
--- /dev/null
+++ b/krb5-1.6.1-empty.patch
@@ -0,0 +1,224 @@
+Treat empty values of KRB5CCNAME (and other variables which can't usefully
+be set to empty values) as if they were not set.
+
+diff -ur krb5-1.6.1/src/appl/bsd/krshd.c krb5-1.6.1/src/appl/bsd/krshd.c
+--- krb5-1.6.1/src/appl/bsd/krshd.c 2006-10-15 03:50:16.000000000 -0400
++++ krb5-1.6.1/src/appl/bsd/krshd.c 2007-05-18 19:51:18.000000000 -0400
+@@ -1438,7 +1438,7 @@
+ * child's environment. This can't really have
+ * a fixed position because tz may or may not be set.
+ */
+- if (getenv("KRB5CCNAME")) {
++ if (getenv("KRB5CCNAME") && getenv("KRB5CCNAME")[0]) {
+ int i;
+ char *buf2 = (char *)malloc(strlen(getenv("KRB5CCNAME"))
+ +strlen("KRB5CCNAME=")+1);
+diff -ur krb5-1.6.1/src/appl/bsd/login.c krb5-1.6.1/src/appl/bsd/login.c
+--- krb5-1.6.1/src/appl/bsd/login.c 2006-08-08 15:26:40.000000000 -0400
++++ krb5-1.6.1/src/appl/bsd/login.c 2007-05-18 19:49:32.000000000 -0400
+@@ -528,7 +528,7 @@
+ login_get_kconf(kcontext);
+
+ /* Set up the credential cache environment variable */
+- if (!getenv(KRB5_ENV_CCNAME)) {
++ if (!getenv(KRB5_ENV_CCNAME) || !getenv(KRB5_ENV_CCNAME)[0]) {
+ sprintf(ccfile, "FILE:/tmp/krb5cc_p%ld", (long) getpid());
+ setenv(KRB5_ENV_CCNAME, ccfile, 1);
+ krb5_cc_set_default_name(kcontext, ccfile);
+@@ -1763,7 +1763,7 @@
+ setenv ("TZ", tz, 1);
+ #endif
+
+- if (ccname)
++ if (ccname && ccname[0])
+ setenv("KRB5CCNAME", ccname, 1);
+
+ setenv("HOME", pwd->pw_dir, 1);
+diff -ur krb5-1.6.1/src/appl/bsd/v4rcp.c krb5-1.6.1/src/appl/bsd/v4rcp.c
+--- krb5-1.6.1/src/appl/bsd/v4rcp.c 2006-08-08 15:26:40.000000000 -0400
++++ krb5-1.6.1/src/appl/bsd/v4rcp.c 2007-05-18 19:50:40.000000000 -0400
+@@ -1060,7 +1060,7 @@
+ fprintf(stderr, "v4rcp: couldn't get local address (KRB5LOCALADDR)\n");
+ exit(1);
+ }
+- if ((envaddr = getenv("KRB5REMOTEADDR"))) {
++ if ((envaddr = getenv("KRB5REMOTEADDR")) && envaddr[0]) {
+ #ifdef HAVE_INET_ATON
+ inet_aton(envaddr, &foreign.sin_addr);
+ #else
+@@ -1068,7 +1068,7 @@
+ #endif
+ foreign.sin_family = AF_INET;
+ envaddr = getenv("KRB5REMOTEPORT");
+- if (envaddr)
++ if (envaddr && envaddr[0])
+ foreign.sin_port = htons(atoi(envaddr));
+ else
+ foreign.sin_port = 0;
+diff -ur krb5-1.6.1/src/appl/telnet/libtelnet/kerberos5.c krb5-1.6.1/src/appl/telnet/libtelnet/kerberos5.c
+--- krb5-1.6.1/src/appl/telnet/libtelnet/kerberos5.c 2006-12-01 16:27:28.000000000 -0500
++++ krb5-1.6.1/src/appl/telnet/libtelnet/kerberos5.c 2007-05-18 19:48:51.000000000 -0400
+@@ -205,7 +205,7 @@
+ return;
+
+ ccname = getenv("KRB5CCNAME");
+- if (ccname) {
++ if (ccname && ccname[0]) {
+ retval = krb5_cc_resolve(telnet_context, ccname, &ccache);
+ if (!retval)
+ retval = krb5_cc_destroy(telnet_context, ccache);
+diff -ur krb5-1.6.1/src/lib/kadm5/alt_prof.c krb5-1.6.1/src/lib/kadm5/alt_prof.c
+--- krb5-1.6.1/src/lib/kadm5/alt_prof.c 2006-05-15 21:45:00.000000000 -0400
++++ krb5-1.6.1/src/lib/kadm5/alt_prof.c 2007-05-18 19:17:53.000000000 -0400
+@@ -82,7 +82,8 @@
+ if (i > 0)
+ krb5_config_len--;
+ if (envname == NULL
+- || (kdc_config = getenv(envname)) == NULL)
++ || (kdc_config = getenv(envname)) == NULL
++ || (kdc_config[0] == '\0'))
+ kdc_config = fname;
+ if (kdc_config == NULL)
+ kdc_config_len = 0;
+@@ -494,7 +495,8 @@
+ !krb5_aprof_get_string(aprofile, hierarchy, TRUE, &svalue)) {
+ params.mask |= KADM5_CONFIG_ADMIN_KEYTAB;
+ params.admin_keytab = svalue;
+- } else if ((params.admin_keytab = (char *) getenv("KRB5_KTNAME"))) {
++ } else if ((params.admin_keytab = (char *) getenv("KRB5_KTNAME")) &&
++ (params.admin_keytab[0] != '\0')) {
+ params.admin_keytab = strdup(params.admin_keytab);
+ if (params.admin_keytab)
+ params.mask |= KADM5_CONFIG_ADMIN_KEYTAB;
+diff -ur krb5-1.6.1/src/lib/krb4/g_cnffile.c krb5-1.6.1/src/lib/krb4/g_cnffile.c
+--- krb5-1.6.1/src/lib/krb4/g_cnffile.c 2003-06-06 10:44:33.000000000 -0400
++++ krb5-1.6.1/src/lib/krb4/g_cnffile.c 2007-05-18 19:57:48.000000000 -0400
+@@ -89,7 +89,7 @@
+
+ /* standard V4 override first */
+ s = getenv("KRB_CONF");
+- if (s) cnffile = fopen(s,"r");
++ if (s && s[0]) cnffile = fopen(s,"r");
+ /* if that's wrong, use V5 config */
+ if (!cnffile) cnffile = krb__v5_get_file("krb4_config");
+ /* and if V5 config doesn't have it, go to hard-coded values */
+@@ -109,7 +109,7 @@
+
+ /* standard (not really) V4 override first */
+ s = getenv("KRB_REALMS");
+- if (s) realmsfile = fopen(s,"r");
++ if (s && s[0]) realmsfile = fopen(s,"r");
+ if (!realmsfile) realmsfile = krb__v5_get_file("krb4_realms");
+ if (!realmsfile) realmsfile = fopen(KRB_RLM_TRANS, "r");
+
+diff -ur krb5-1.6.1/src/lib/krb4/tkt_string.c krb5-1.6.1/src/lib/krb4/tkt_string.c
+--- krb5-1.6.1/src/lib/krb4/tkt_string.c 2006-03-11 17:23:28.000000000 -0500
++++ krb5-1.6.1/src/lib/krb4/tkt_string.c 2007-05-18 19:57:57.000000000 -0400
+@@ -67,7 +67,7 @@
+
+ if (!*krb_ticket_string) {
+ env = getenv("KRBTKFILE");
+- if (env) {
++ if (env && env[0]) {
+ (void) strncpy(krb_ticket_string, env,
+ sizeof(krb_ticket_string)-1);
+ krb_ticket_string[sizeof(krb_ticket_string)-1] = '\0';
+diff -ur krb5-1.6.1/src/lib/krb5/ccache/cccursor.c krb5-1.6.1/src/lib/krb5/ccache/cccursor.c
+--- krb5-1.6.1/src/lib/krb5/ccache/cccursor.c 2006-11-07 15:18:31.000000000 -0500
++++ krb5-1.6.1/src/lib/krb5/ccache/cccursor.c 2007-05-18 19:19:11.000000000 -0400
+@@ -136,7 +136,7 @@
+ /* fall through */
+ case CCCURSOR_ENV:
+ name = getenv(KRB5_ENV_CCNAME);
+- if (name != NULL) {
++ if ((name != NULL) && (name[0] != '\0')) {
+ cursor->pos = CCCURSOR_OS;
+ ret = cccol_do_resolve(context, cursor, name, ccache);
+ if (ret)
+diff -ur krb5-1.6.1/src/lib/krb5/os/ccdefname.c krb5-1.6.1/src/lib/krb5/os/ccdefname.c
+--- krb5-1.6.1/src/lib/krb5/os/ccdefname.c 2007-03-29 20:36:20.000000000 -0400
++++ krb5-1.6.1/src/lib/krb5/os/ccdefname.c 2007-05-18 18:32:20.000000000 -0400
+@@ -292,7 +292,7 @@
+ /* try the environment variable first */
+ new_ccname = getenv(KRB5_ENV_CCNAME);
+
+- if (new_ccname == NULL) {
++ if ((new_ccname == NULL) || (new_ccname[0] == '\0')) {
+ /* fall back on the default ccache name for the OS */
+ new_ccname = new_ccbuf;
+ err = get_from_os (new_ccbuf, sizeof (new_ccbuf));
+diff -ur krb5-1.6.1/src/lib/krb5/os/init_os_ctx.c krb5-1.6.1/src/lib/krb5/os/init_os_ctx.c
+--- krb5-1.6.1/src/lib/krb5/os/init_os_ctx.c 2007-04-10 17:51:46.000000000 -0400
++++ krb5-1.6.1/src/lib/krb5/os/init_os_ctx.c 2007-05-18 18:32:20.000000000 -0400
+@@ -196,7 +196,7 @@
+ if (!secure)
+ {
+ char *env = getenv("KRB5_CONFIG");
+- if (env)
++ if (env && env[0])
+ {
+ name = malloc(strlen(env) + 1);
+ if (!name) return ENOMEM;
+@@ -250,7 +250,7 @@
+ filepath = DEFAULT_SECURE_PROFILE_PATH;
+ } else {
+ filepath = getenv("KRB5_CONFIG");
+- if (!filepath) filepath = DEFAULT_PROFILE_PATH;
++ if (!filepath || !(filepath[0])) filepath = DEFAULT_PROFILE_PATH;
+ }
+
+ /* count the distinct filename components */
+@@ -297,7 +297,7 @@
+ profile_filespec_t *newfiles;
+
+ file = getenv(KDC_PROFILE_ENV);
+- if (file == NULL)
++ if ((file == NULL) || (file[0] == '\0'))
+ file = DEFAULT_KDC_PROFILE;
+
+ for (count = 0; (*pfiles)[count]; count++)
+diff -ur krb5-1.6.1/src/lib/krb5/os/ktdefname.c krb5-1.6.1/src/lib/krb5/os/ktdefname.c
+--- krb5-1.6.1/src/lib/krb5/os/ktdefname.c 2002-09-03 15:29:37.000000000 -0400
++++ krb5-1.6.1/src/lib/krb5/os/ktdefname.c 2007-05-18 19:19:28.000000000 -0400
+@@ -47,7 +47,7 @@
+ return KRB5_CONFIG_NOTENUFSPACE;
+ strcpy(name, krb5_overridekeyname);
+ } else if ((context->profile_secure == FALSE) &&
+- (cp = getenv("KRB5_KTNAME"))) {
++ (cp = getenv("KRB5_KTNAME")) && (cp[0] != '\0')) {
+ if ((size_t) namesize < (strlen(cp)+1))
+ return KRB5_CONFIG_NOTENUFSPACE;
+ strcpy(name, cp);
+diff -ur krb5-1.6.1/src/lib/krb5/rcache/rc_base.c krb5-1.6.1/src/lib/krb5/rcache/rc_base.c
+--- krb5-1.6.1/src/lib/krb5/rcache/rc_base.c 2006-06-08 16:01:44.000000000 -0400
++++ krb5-1.6.1/src/lib/krb5/rcache/rc_base.c 2007-05-18 19:18:48.000000000 -0400
+@@ -94,7 +94,7 @@
+ char * krb5_rc_default_type(krb5_context context)
+ {
+ char *s;
+- if ((s = getenv("KRB5RCACHETYPE")))
++ if ((s = getenv("KRB5RCACHETYPE")) && (s[0] != '\0'))
+ return s;
+ else
+ return "dfl";
+@@ -103,7 +103,7 @@
+ char * krb5_rc_default_name(krb5_context context)
+ {
+ char *s;
+- if ((s = getenv("KRB5RCACHENAME")))
++ if ((s = getenv("KRB5RCACHENAME")) && (s[0] != '\0'))
+ return s;
+ else
+ return (char *) 0;
+diff -ur krb5-1.6.1/src/lib/krb5/rcache/rc_io.c krb5-1.6.1/src/lib/krb5/rcache/rc_io.c
+--- krb5-1.6.1/src/lib/krb5/rcache/rc_io.c 2006-12-18 18:11:28.000000000 -0500
++++ krb5-1.6.1/src/lib/krb5/rcache/rc_io.c 2007-05-18 18:32:20.000000000 -0400
+@@ -47,7 +47,7 @@
+ {
+ char *dir;
+
+- if (!(dir = getenv("KRB5RCACHEDIR"))) {
++ if (!(dir = getenv("KRB5RCACHEDIR")) || !dir[0]) {
+ #if defined(_WIN32)
+ if (!(dir = getenv("TEMP")))
+ if (!(dir = getenv("TMP")))