(krb5_config_parse_file_multi) Don't leak memory when the path tokens can't be expanded
This commit is contained in:

committed by
Love Hornquist Astrand

parent
b1063ea8fc
commit
9d42b10027
@@ -413,9 +413,6 @@ krb5_config_parse_file_multi (krb5_context context,
|
|||||||
unsigned lineno = 0;
|
unsigned lineno = 0;
|
||||||
krb5_error_code ret;
|
krb5_error_code ret;
|
||||||
struct fileptr f;
|
struct fileptr f;
|
||||||
#ifdef KRB5_USE_PATH_TOKENS
|
|
||||||
char * exp_fname = NULL;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* If the fname starts with "~/" parse configuration file in the
|
* If the fname starts with "~/" parse configuration file in the
|
||||||
@@ -488,10 +485,20 @@ krb5_config_parse_file_multi (krb5_context context,
|
|||||||
}
|
}
|
||||||
=======
|
=======
|
||||||
#ifdef KRB5_USE_PATH_TOKENS
|
#ifdef KRB5_USE_PATH_TOKENS
|
||||||
ret = _krb5_expand_path_tokens(context, fname, &exp_fname);
|
{
|
||||||
if (ret)
|
char * exp_fname = NULL;
|
||||||
return ret;
|
|
||||||
fname = exp_fname;
|
ret = _krb5_expand_path_tokens(context, fname, &exp_fname);
|
||||||
|
if (ret) {
|
||||||
|
if (newfname)
|
||||||
|
free(newfname);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newfname)
|
||||||
|
free(newfname);
|
||||||
|
fname = newfname = exp_fname;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
f.f = fopen(fname, "r");
|
f.f = fopen(fname, "r");
|
||||||
@@ -502,10 +509,6 @@ krb5_config_parse_file_multi (krb5_context context,
|
|||||||
fname, strerror(ret));
|
fname, strerror(ret));
|
||||||
if (newfname)
|
if (newfname)
|
||||||
free(newfname);
|
free(newfname);
|
||||||
#ifdef KRB5_USE_PATH_TOKENS
|
|
||||||
if (exp_fname)
|
|
||||||
free (exp_fname);
|
|
||||||
#endif
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -515,19 +518,11 @@ krb5_config_parse_file_multi (krb5_context context,
|
|||||||
krb5_set_error_message (context, ret, "%s:%u: %s", fname, lineno, str);
|
krb5_set_error_message (context, ret, "%s:%u: %s", fname, lineno, str);
|
||||||
if (newfname)
|
if (newfname)
|
||||||
free(newfname);
|
free(newfname);
|
||||||
#ifdef KRB5_USE_PATH_TOKENS
|
|
||||||
if (exp_fname)
|
|
||||||
free (exp_fname);
|
|
||||||
#endif
|
|
||||||
return ret;
|
return ret;
|
||||||
>>>>>>> Initial Windows port
|
>>>>>>> Initial Windows port
|
||||||
}
|
}
|
||||||
if (newfname)
|
if (newfname)
|
||||||
free(newfname);
|
free(newfname);
|
||||||
#ifdef KRB5_USE_PATH_TOKENS
|
|
||||||
if (exp_fname)
|
|
||||||
free (exp_fname);
|
|
||||||
#endif
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user