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:
parent
94b149f3cb
commit
4a4d8e4b0f
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
/*****************************************************************
|
||||
|
Loading…
Reference in New Issue
Block a user