return false;
}
- SMB_ASSERT(cache_value.length == sizeof(*psid));
- memcpy(psid, cache_value.data, sizeof(*psid));
+ memcpy(psid, cache_value.data, MIN(sizeof(*psid), cache_value.length));
+ SMB_ASSERT(cache_value.length >= offsetof(struct dom_sid, id_auth));
+ SMB_ASSERT(cache_value.length == ndr_size_dom_sid(psid, 0));
return true;
}
return false;
}
- SMB_ASSERT(cache_value.length == sizeof(*psid));
- memcpy(psid, cache_value.data, sizeof(*psid));
+ memcpy(psid, cache_value.data, MIN(sizeof(*psid), cache_value.length));
+ SMB_ASSERT(cache_value.length >= offsetof(struct dom_sid, id_auth));
+ SMB_ASSERT(cache_value.length == ndr_size_dom_sid(psid, 0));
return true;
}