diff options
-rw-r--r-- | libcli/security/dom_sid.h | 1 | ||||
-rw-r--r-- | libcli/security/util_sid.c | 16 |
2 files changed, 14 insertions, 3 deletions
diff --git a/libcli/security/dom_sid.h b/libcli/security/dom_sid.h index 3d1161fdc7..8d59b1824c 100644 --- a/libcli/security/dom_sid.h +++ b/libcli/security/dom_sid.h @@ -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); diff --git a/libcli/security/util_sid.c b/libcli/security/util_sid.c index 9ba28ebc75..18b9951960 100644 --- a/libcli/security/util_sid.c +++ b/libcli/security/util_sid.c @@ -233,13 +233,12 @@ void sid_copy(struct dom_sid *dst, const struct dom_sid *src) } /***************************************************************** - Parse a on-the-wire SID to a struct dom_sid. + Parse a on-the-wire SID (in a DATA_BLOB) to a struct dom_sid. *****************************************************************/ -bool sid_parse(const char *inbuf, size_t len, struct dom_sid *sid) +bool sid_blob_parse(DATA_BLOB in, 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)) { @@ -249,6 +248,17 @@ bool sid_parse(const char *inbuf, size_t len, struct dom_sid *sid) } /***************************************************************** + Parse a on-the-wire SID to a struct dom_sid. +*****************************************************************/ + +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); + return sid_blob_parse(in, sid); +} + +/***************************************************************** See if 2 SIDs are in the same domain this just compares the leading sub-auths *****************************************************************/ |