1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00

libcli/security Add sid_blob_parse() to directly parse a binary SID blob

This commit is contained in:
Andrew Bartlett 2010-12-15 15:47:01 +11:00
parent 94b149f3cb
commit 4a4d8e4b0f
2 changed files with 17 additions and 6 deletions

View File

@ -81,6 +81,7 @@ bool sid_split_rid(struct dom_sid *sid, uint32_t *rid);
bool sid_peek_rid(const struct dom_sid *sid, uint32_t *rid);
bool sid_peek_check_rid(const struct dom_sid *exp_dom_sid, const struct dom_sid *sid, uint32_t *rid);
void sid_copy(struct dom_sid *dst, const struct dom_sid *src);
bool sid_blob_parse(DATA_BLOB in, struct dom_sid *sid);
bool sid_parse(const char *inbuf, size_t len, struct dom_sid *sid);
int sid_compare_domain(const struct dom_sid *sid1, const struct dom_sid *sid2);
bool sid_equal(const struct dom_sid *sid1, const struct dom_sid *sid2);

View File

@ -232,6 +232,21 @@ void sid_copy(struct dom_sid *dst, const struct dom_sid *src)
dst->sub_auths[i] = src->sub_auths[i];
}
/*****************************************************************
Parse a on-the-wire SID (in a DATA_BLOB) to a struct dom_sid.
*****************************************************************/
bool sid_blob_parse(DATA_BLOB in, struct dom_sid *sid)
{
enum ndr_err_code ndr_err;
ndr_err = ndr_pull_struct_blob_all(&in, NULL, sid,
(ndr_pull_flags_fn_t)ndr_pull_dom_sid);
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
return false;
}
return true;
}
/*****************************************************************
Parse a on-the-wire SID to a struct dom_sid.
*****************************************************************/
@ -240,12 +255,7 @@ bool sid_parse(const char *inbuf, size_t len, struct dom_sid *sid)
{
enum ndr_err_code ndr_err;
DATA_BLOB in = data_blob_const(inbuf, len);
ndr_err = ndr_pull_struct_blob_all(&in, NULL, sid,
(ndr_pull_flags_fn_t)ndr_pull_dom_sid);
if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
return false;
}
return true;
return sid_blob_parse(in, sid);
}
/*****************************************************************