summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTheodore Tso <tytso@mit.edu>1993-10-30 22:50:46 +0000
committerTheodore Tso <tytso@mit.edu>1993-10-30 22:50:46 +0000
commit2a47d13d348a47c84c27a543d0ec3a2913ee3ef1 (patch)
tree89259ff232a51a3b0f7b6574b6e853f5be5573c3 /src
parent604f29fba4c42af33dac8b11ed5ce731a80c25c1 (diff)
downloadkrb5-2a47d13d348a47c84c27a543d0ec3a2913ee3ef1.tar.gz
krb5-2a47d13d348a47c84c27a543d0ec3a2913ee3ef1.tar.xz
krb5-2a47d13d348a47c84c27a543d0ec3a2913ee3ef1.zip
Added missing free calls in case of an error
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@2712 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r--src/lib/krb5/krb/parse.c21
1 files changed, 14 insertions, 7 deletions
diff --git a/src/lib/krb5/krb/parse.c b/src/lib/krb5/krb/parse.c
index 8fb8bf15c..c8d6eb8a9 100644
--- a/src/lib/krb5/krb/parse.c
+++ b/src/lib/krb5/krb/parse.c
@@ -62,7 +62,7 @@ static char rcsid_parse_c [] =
#define COMPONENT_SEP '/'
#define QUOTECHAR '\\'
-#define FCOMPNUM 2
+#define FCOMPNUM 10
/*
@@ -82,6 +82,7 @@ krb5_parse_name(name, nprincipal)
int fcompsize[FCOMPNUM];
int realmsize = 0;
static char *default_realm = NULL;
+ static int default_realm_size = 0;
char *tmpdata;
krb5_principal principal;
krb5_error_code retval;
@@ -148,14 +149,20 @@ krb5_parse_name(name, nprincipal)
}
principal->length = components;
/*
- * If a realm was not found, then we need to find the defualt
- * realm....
+ * If a realm was not found, then use the defualt realm....
*/
if (!parsed_realm) {
- if (!default_realm &&
- (retval = krb5_get_default_realm(&default_realm)))
- return(retval);
- krb5_princ_realm(principal)->length = realmsize = strlen(default_realm);
+ if (!default_realm) {
+ retval = krb5_get_default_realm(&default_realm);
+ if (retval) {
+ krb5_xfree(principal->data);
+ krb5_xfree((char *)principal);
+ return(retval);
+ }
+ default_realm_size = strlen(default_realm);
+ }
+ krb5_princ_realm(principal)->length = default_realm_size;
+ realmsize = default_realm_size;
}
/*
* Pass 2. Happens only if there were more than FCOMPNUM