fix memory management in handle_referral_params
authorTom Yu <tlyu@mit.edu>
Mon, 13 Apr 2009 20:26:24 +0000 (20:26 +0000)
committerTom Yu <tlyu@mit.edu>
Mon, 13 Apr 2009 20:26:24 +0000 (20:26 +0000)
pull up r22037 from trunk

 Fix in handle_referral_params

ticket: 6456
version_fixed: 1.7

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/krb5-1-7@22203 dc483132-0cff-0310-8789-dd5450dbe970

src/kdc/main.c

index 5c5ea9663f215d218786d6460c4f850862ccdcff..d82aa443a783dc400109ec0fc7e7c29a257b88b4 100644 (file)
@@ -175,7 +175,6 @@ handle_referral_params(krb5_realm_params *rparams,
                        kdc_realm_t *rdp )
 {
     krb5_error_code retval = 0;
-
     if (no_refrls && krb5_match_config_pattern(no_refrls, KRB5_CONF_ASTERISK) == TRUE) {
         rdp->realm_no_host_referral = strdup(KRB5_CONF_ASTERISK);
         if (!rdp->realm_no_host_referral)
@@ -192,9 +191,10 @@ handle_referral_params(krb5_realm_params *rparams,
             else if (asprintf(&(rdp->realm_no_host_referral),"%s%s%s", " ", 
                         rparams->realm_no_host_referral, " ") < 0) 
                 retval = ENOMEM; 
-        } else if( no_refrls != NULL && asprintf(&(rdp->realm_no_host_referral),"%s%s%s", " ", no_refrls, " ") < 0)
-            retval = ENOMEM; 
-        else
+        } else if( no_refrls != NULL) {
+            if ( asprintf(&(rdp->realm_no_host_referral),"%s%s%s", " ", no_refrls, " ") < 0)
+                retval = ENOMEM; 
+        } else
             rdp->realm_no_host_referral = NULL;
     }
 
@@ -213,16 +213,17 @@ handle_referral_params(krb5_realm_params *rparams,
                     rdp->realm_host_based_services = strdup(KRB5_CONF_ASTERISK);
                     if (!rdp->realm_host_based_services)
                         retval = ENOMEM;
-                } else if (host_based_srvcs && asprintf(&(rdp->realm_host_based_services), "%s%s%s%s%s",
+                } else if (host_based_srvcs) {
+                    if (asprintf(&(rdp->realm_host_based_services), "%s%s%s%s%s",
                            " ", host_based_srvcs," ",rparams->realm_host_based_services, " ") < 0)
                     retval = ENOMEM; 
-                else if (asprintf(&(rdp->realm_host_based_services),"%s%s%s", " ", 
+                else if (asprintf(&(rdp->realm_host_based_services),"%s%s%s", " ", 
                            rparams->realm_host_based_services, " ") < 0) 
                     retval = ENOMEM; 
-            } else if(host_based_srvcs != NULL && asprintf(&(rdp->realm_host_based_services),"%s%s%s", 
-                      " ", host_based_srvcs, " ") < 0)
+            } else if (host_based_srvcs) {
+                if (asprintf(&(rdp->realm_host_based_services),"%s%s%s", " ", host_based_srvcs, " ") < 0)
                     retval = ENOMEM; 
-            else
+            else
                 rdp->realm_host_based_services = NULL;
     }