Skip to content

windows: check FormatMessage result in getErrorMessage - #3719

Draft
melonakos wants to merge 1 commit into
masterfrom
fix/3714-geterrormessage-uninit
Draft

melonakos wants to merge 1 commit into
masterfrom
fix/3714-geterrormessage-uninit

Conversation

@melonakos

Copy link
Copy Markdown
Member

FormatMessage leaves the output pointer untouched when it fails, and getErrorMessage read it uninitialized and never freed the buffer on success. Check the result, return a fallback with the system error code, and LocalFree the buffer. Fixes #3714.

FormatMessage only writes the output pointer when it succeeds. On failure
it returns 0 and leaves lpMsgBuf untouched, so constructing a std::string
from it ran strlen over an indeterminate stack value.

Initialize the pointer, check FormatMessage's return, and fall back to
reporting the raw system error code. Also release the buffer that
FORMAT_MESSAGE_ALLOCATE_BUFFER allocates, which previously leaked on
every successful call.

Fixes #3714

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012SRueobKykUocB1SRdHsEE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] Windows: getErrorMessage() reads uninitialized pointer when FormatMessage fails

1 participant