(unparse_name): make sure there are space for a NUL, set *name to NULL
when there is a failure (so caller can't get hold of a freed pointer) git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@12524 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -321,14 +321,17 @@ unparse_name(krb5_context context,
|
|||||||
len += 2*plen;
|
len += 2*plen;
|
||||||
len++;
|
len++;
|
||||||
}
|
}
|
||||||
|
len++;
|
||||||
*name = malloc(len);
|
*name = malloc(len);
|
||||||
if(len != 0 && *name == NULL) {
|
if(len != 0 && *name == NULL) {
|
||||||
krb5_set_error_string (context, "malloc: out of memory");
|
krb5_set_error_string (context, "malloc: out of memory");
|
||||||
return ENOMEM;
|
return ENOMEM;
|
||||||
}
|
}
|
||||||
ret = unparse_name_fixed(context, principal, *name, len, short_flag);
|
ret = unparse_name_fixed(context, principal, *name, len, short_flag);
|
||||||
if(ret)
|
if(ret) {
|
||||||
free(*name);
|
free(*name);
|
||||||
|
*name = NULL;
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user