lib: Make sid_parse return the parsed length
[samba.git] / libcli / security / util_sid.c
index 531d3809565e537f1efdcd8203b9d73c75047490..4a186d69cdaeccaf0aaefa7ba0d886eb4a55eecd 100644 (file)
@@ -300,7 +300,8 @@ void sid_copy(struct dom_sid *dst, const struct dom_sid *src)
  Parse a on-the-wire SID to a struct dom_sid.
 *****************************************************************/
 
-bool sid_parse(const uint8_t *inbuf, size_t len, struct dom_sid *sid)
+struct sid_parse_ret sid_parse(
+       const uint8_t *inbuf, size_t len, struct dom_sid *sid)
 {
        DATA_BLOB in = data_blob_const(inbuf, len);
        enum ndr_err_code ndr_err;
@@ -308,9 +309,9 @@ bool sid_parse(const uint8_t *inbuf, size_t len, struct dom_sid *sid)
        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 (struct sid_parse_ret) { .len = -1 };
        }
-       return true;
+       return (struct sid_parse_ret) { .len = ndr_size_dom_sid(sid, 0) };
 }
 
 /*****************************************************************