talloc_tos() is better than plain malloc...
Signed-off-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
char *sid_string_tos(const struct dom_sid *sid);
bool sid_linearize(char *outbuf, size_t len, const struct dom_sid *sid);
bool non_mappable_sid(struct dom_sid *sid);
-char *sid_binstring_hex(const struct dom_sid *sid);
+char *sid_binstring_hex_talloc(TALLOC_CTX *mem_ctx, const struct dom_sid *sid);
struct netr_SamInfo3;
NTSTATUS sid_array_from_info3(TALLOC_CTX *mem_ctx,
const struct netr_SamInfo3 *info3,
Caller must free.
*****************************************************************/
-char *sid_binstring_hex(const struct dom_sid *sid)
+char *sid_binstring_hex_talloc(TALLOC_CTX *mem_ctx, const struct dom_sid *sid)
{
- char *s;
int len = ndr_size_dom_sid(sid, 0);
char buf[len];
sid_linearize(buf, len, sid);
- hex_encode((const unsigned char *)buf, len, &s);
- return s;
+ return hex_encode_talloc(mem_ctx, (const unsigned char *)buf, len);
}
NTSTATUS sid_array_from_info3(TALLOC_CTX *mem_ctx,
char *dn, *sid_string;
ADS_STATUS status;
- sid_string = sid_binstring_hex(sid);
+ sid_string = sid_binstring_hex_talloc(talloc_tos(), sid);
if (sid_string == NULL) {
return ADS_ERROR(LDAP_NO_MEMORY);
}
if (!asprintf(&dn, "<SID=%s>", sid_string)) {
- SAFE_FREE(sid_string);
+ TALLOC_FREE(sid_string);
return ADS_ERROR(LDAP_NO_MEMORY);
}
status = ads_do_search_retry(ads, dn, LDAP_SCOPE_BASE,
"(objectclass=*)", attrs, res);
SAFE_FREE(dn);
- SAFE_FREE(sid_string);
+ TALLOC_FREE(sid_string);
return status;
}