-
Notifications
You must be signed in to change notification settings - Fork 5.3k
[DiagnosticServer] Impove ipc message parsing resiliency #122257
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[DiagnosticServer] Impove ipc message parsing resiliency #122257
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR improves the resiliency of IPC message parsing in the Diagnostic Server by addressing issues with truncated payloads. The changes add defensive checks to prevent buffer underruns and ensure proper data alignment when parsing UTF-16 strings.
Key Changes:
- Added alignment validation for UTF-16 string parsing to ensure buffer pointers are properly aligned
- Replaced an ineffective underflow assertion with both a clearer assertion and runtime validation in
ds_ipc_message_try_parse_value - Fixed comparison logic in
attach_profiler_command_try_parse_payloadto correctly validate sufficient buffer space
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| src/native/eventpipe/ds-protocol.c | Adds buffer alignment check for UTF-16 parsing and improves buffer length validation with runtime check |
| src/native/eventpipe/ds-profiler-protocol.c | Corrects buffer size validation from <= to >= to ensure adequate remaining buffer |
e54397b to
93ea92f
Compare
This reverts commit 93ea92f.
While investigating for a way to check whether arbitrary .NET processes support emitting userevents, the idea of probing for
DS_IPC_E_UNKNOWN_COMMAND 0x80131385with an empty payload uncovered a problem with truncated payloads. Additionally, there were two other places to improve the resiliency of IPC protocol parsing.