1
0
mirror of https://github.com/samba-team/samba.git synced 2025-11-30 20:23:49 +03:00

r20064: - fix pushing of DeReplicaObjectIdentifierX, this lets the DsAddEntry()

request work correctly
- the error structures all have the same type

metze
This commit is contained in:
Stefan Metzmacher
2006-12-07 15:24:23 +00:00
committed by Gerald (Jerry) Carter
parent e8c77b5cba
commit 3322dbd901
3 changed files with 22 additions and 6 deletions

View File

@@ -126,7 +126,7 @@ interface drsuapi
/* Function 0x02 */
typedef [public,gensize] struct {
[value(ndr_size_drsuapi_DsReplicaObjectIdentifier(r, ndr->flags)-4)] uint32 __ndr_size;
[value(ndr_size_dom_sid(&r->sid, ndr->flags))] uint32 __ndr_size_sid;
[value(ndr_size_dom_sid28(&r->sid, ndr->flags))] uint32 __ndr_size_sid;
GUID guid;
dom_sid28 sid;
[flag(STR_SIZE4|STR_CHARLEN|STR_CONFORMANT)] string dn;
@@ -454,7 +454,7 @@ interface drsuapi
/* DN String values */
typedef [public,gensize] struct {
[value(ndr_size_drsuapi_DsReplicaObjectIdentifier3(r, ndr->flags))] uint32 __ndr_size;
[value(ndr_size_dom_sid(&r->sid,ndr->flags))] uint32 __ndr_size_sid;
[value(ndr_size_dom_sid28(&r->sid,ndr->flags))] uint32 __ndr_size_sid;
GUID guid;
dom_sid28 sid;
[flag(STR_SIZE4|STR_CHARLEN)] string dn;
@@ -1113,10 +1113,10 @@ interface drsuapi
[case(1)] drsuapi_DsAddEntryErrorInfo1 error1;
/* [case(2)] drsuapi_DsAddEntryErrorInfo2 error2;
[case(3)] drsuapi_DsAddEntryErrorInfo3 error3;
*/ [case(4)] drsuapi_DsAddEntryErrorInfoX error4;
[case(5)] drsuapi_DsAddEntryErrorInfoX error5;
[case(6)] drsuapi_DsAddEntryErrorInfoX error6;
[case(7)] drsuapi_DsAddEntryErrorInfoX error7;
*/ [case(4)] drsuapi_DsAddEntryErrorInfoX errorX;
[case(5)] drsuapi_DsAddEntryErrorInfoX errorX;
[case(6)] drsuapi_DsAddEntryErrorInfoX errorX;
[case(7)] drsuapi_DsAddEntryErrorInfoX errorX;
} drsuapi_DsAddEntryErrorInfo;
typedef struct {

View File

@@ -299,5 +299,6 @@ void ndr_print_dom_sid2(struct ndr_print *ndr, const char *name, const struct do
NTSTATUS ndr_push_dom_sid28(struct ndr_push *ndr, int ndr_flags, const struct dom_sid *sid);
NTSTATUS ndr_pull_dom_sid28(struct ndr_pull *ndr, int ndr_flags, struct dom_sid *sid);
void ndr_print_dom_sid28(struct ndr_print *ndr, const char *name, const struct dom_sid *sid);
size_t ndr_size_dom_sid28(const struct dom_sid *sid, int flags);
#endif /* __LIBNDR_H__ */

View File

@@ -34,6 +34,21 @@ size_t ndr_size_dom_sid(const struct dom_sid *sid, int flags)
return 8 + 4*sid->num_auths;
}
size_t ndr_size_dom_sid28(const struct dom_sid *sid, int flags)
{
struct dom_sid zero_sid;
if (!sid) return 0;
ZERO_STRUCT(zero_sid);
if (memcmp(&zero_sid, sid, sizeof(zero_sid)) == 0) {
return 0;
}
return 8 + 4*sid->num_auths;
}
/*
return the wire size of a security_ace
*/