Manticore is a Go library of offensive and defensive security primitives maintained by The Manticore Project. This release, v1.1.2, is a small patch that continues the Remote Registry and registry work started in v1.1.1. It contains a single, focused fix to how RPC_SECURITY_DESCRIPTOR is marshaled over NDR.
RPC_SECURITY_DESCRIPTOR marshaling
The fix corrects RPC_SECURITY_DESCRIPTOR marshaling when its size_is and length_is bounds are independent (#618). In NDR, a security descriptor is carried as a conformant-varying array of bytes: the buffer’s allocated capacity is described by size_is (the conformance count) and the number of bytes actually present is described by length_is (the variance count). These two values are not always equal, since a caller can allocate a larger buffer than it fills.
Previously, the marshaling path conflated the two bounds, which produced an incorrect wire layout whenever they differed. NDR encodes the conformance and variance counts in distinct header fields, so getting either one wrong shifts every subsequent field and breaks decoding on the receiving end. For a structure like a security descriptor, which is passed across registry and other RPC interfaces, that means the server either rejects the request or interprets the wrong bytes.
Treating size_is and length_is as independent matches the NDR transfer syntax and keeps RPC_SECURITY_DESCRIPTOR interoperable with real RPC endpoints. If you use the registry primitives, you should upgrade.