--- /tmp/peer_proxy_negotiate_auth.cc	2009-08-08 14:56:02.000000000 +0100
+++ src/peer_proxy_negotiate_auth.cc	2009-08-08 11:51:48.000000000 +0100
@@ -82,9 +82,8 @@
 
 static struct kstruct {
   krb5_context context;
-  char* mem_cache_env;
   krb5_ccache cc;
-} kparam = {NULL, NULL, NULL};
+} kparam = {NULL, NULL};
 
 int krb5_create_cache(char* keytab_filename, char* principal_name);
 void krb5_cleanup(void);
@@ -152,9 +151,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;
     }
 }
 
@@ -240,7 +236,6 @@
               debugs(11, 5, HERE << "Error while initialising Kerberos library : " << error_message(code));
               return(1) ;
             }
-          kparam.mem_cache_env=NULL;
         }
 
 #if HAVE_PROFILE_H
@@ -364,10 +359,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);