--- src/peer_proxy_negotiate_auth.c	2009-08-02 03:20:08.000000000 +0100
+++ /tmp/peer_proxy_negotiate_auth.c	2009-08-08 12:09:48.000000000 +0100
@@ -81,11 +81,10 @@
 
 static struct kstruct {
     krb5_context context;
-    char *mem_cache_env;
     krb5_ccache cc;
 } kparam = {
 
-    NULL, NULL, NULL
+    NULL, NULL
 };
 
 int krb5_create_cache(char *keytab_filename, char *principal_name);
@@ -158,9 +157,6 @@
 	kparam.cc = NULL;
 	krb5_free_context(kparam.context);
 	kparam.context = NULL;
-	if (kparam.mem_cache_env)
-	    xfree(kparam.mem_cache_env);
-	kparam.mem_cache_env = NULL;
     }
 }
 
@@ -238,7 +234,6 @@
 		debug(11, 5) ("Error while initialising Kerberos library : %s\n", error_message(code));
 		return (1);
 	    }
-	    kparam.mem_cache_env = NULL;
 	}
 #if HAVE_PROFILE_H
 	code = krb5_get_profile(kparam.context, &profile);
@@ -342,10 +337,7 @@
 	snprintf(mem_cache, strlen("MEMORY:squid_proxy_auth_") + 16, "MEMORY:squid_proxy_auth_%d", getpid());
 #endif
 
-	kparam.mem_cache_env = (char *) xmalloc(strlen("KRB5CCNAME=") + strlen(mem_cache) + 1);
-	strcpy(kparam.mem_cache_env, "KRB5CCNAME=");
-	strcat(kparam.mem_cache_env, mem_cache);
-	putenv(kparam.mem_cache_env);
+	setenv("KRB5CCNAME", mem_cache, 1);
 	code = krb5_cc_resolve(kparam.context, mem_cache, &kparam.cc);
 	if (mem_cache)
 	    xfree(mem_cache);

