lib/krb5: scc_alloc do not leak 'freeme'
Introduce a common 'out' label to avoid leaking 'freeme'. Change-Id: I8d58efc75125ee553b462372ad160394013f9a3a
This commit is contained in:
@@ -446,10 +446,8 @@ scc_alloc(krb5_context context,
|
|||||||
name += sizeof("SCC:") - 1;
|
name += sizeof("SCC:") - 1;
|
||||||
|
|
||||||
if ((s->file = strdup(name)) == NULL) {
|
if ((s->file = strdup(name)) == NULL) {
|
||||||
(void) krb5_enomem(context);
|
ret = krb5_enomem(context);
|
||||||
scc_free(s);
|
goto out;
|
||||||
free(freeme);
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((subsidiary = strrchr(s->file, ':'))) {
|
if ((subsidiary = strrchr(s->file, ':'))) {
|
||||||
@@ -480,11 +478,14 @@ scc_alloc(krb5_context context,
|
|||||||
if (ret == 0 && s->file && s->sub &&
|
if (ret == 0 && s->file && s->sub &&
|
||||||
(asprintf(&s->name, "%s:%s", s->file, s->sub) < 0 || s->name == NULL))
|
(asprintf(&s->name, "%s:%s", s->file, s->sub) < 0 || s->name == NULL))
|
||||||
ret = krb5_enomem(context);
|
ret = krb5_enomem(context);
|
||||||
|
|
||||||
|
out:
|
||||||
if (ret || s->file == NULL || s->sub == NULL || s->name == NULL) {
|
if (ret || s->file == NULL || s->sub == NULL || s->name == NULL) {
|
||||||
scc_free(s);
|
scc_free(s);
|
||||||
free(freeme);
|
s = NULL;
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
free(freeme);
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user