Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In the current version, if an object ACE does not contain an InheritedObjectType, the parser fails with
IoError { source: Custom { kind: UnexpectedEof, error: "failed to fill whole buffer" } }
.In the Object ACE structure,
ObjectType
andInheritedObjectType
fields are optional. Their presence depends on the value of theFlags
field. This is not clearly stated in the documentation but it is implemented in impacket: https://github.com/SecureAuthCorp/impacket/blob/5d4ad6cc26496f6e16e7ec6ab54b631ea98b09c5/impacket/ldap/ldaptypes.py#L249-L259.Currently, the parser assumes that these fields are always present, which leads to a 16-bytes shift in some cases and the previously mentioned error.
This patch fixes the issue by:
Option<Guid>
type instead ofGuid
forobject_type
andinherited_type
fieldsFlags
value before readingObjectType
andInheritedObjectType
fields.I have also added a few tests.