Modify ↓
Opened 16 years ago
Closed 16 years ago
#1260 closed Bug (Fixed)
Buffer overflow in _WinAPI_GetLastErrorMessage()
| Reported by: | danielkza | Owned by: | Valik |
|---|---|---|---|
| Milestone: | 3.3.1.5 | Component: | Standard UDFs |
| Version: | 3.3.1.3 | Severity: | Blocking |
| Keywords: | Cc: |
Description
Func _WinAPI_GetLastErrorMessage()
Local $tText
$tText = DllStructCreate("char Text[4096]")
_WinAPI_FormatMessage($__WINAPCONSTANT_FORMAT_MESSAGE_FROM_SYSTEM, 0, _WinAPI_GetLastError(), 0, DllStructGetPtr($tText), 4096, 0)
Return DllStructGetData($tText, "Text")
EndFunc ;==>_WinAPI_GetLastErrorMessage
The 'nSize' parameter passed is not accounting for the terminating null character: it should be 4095, or the array size should be changed to 4097, according to MSDN's example code.
Another solution (a more elegant one, in my view) is letting FormatMessage allocate the buffer. The attached file contains a implementation of this method.
Thank you,
Daniel
Attachments (1)
Change History (3)
by , 16 years ago
| Attachment: | WinAPI_GetLastErrorMessageW.au3 added |
|---|
comment:1 by , 16 years ago
| Severity: | None → Blocking |
|---|
comment:2 by , 16 years ago
| Milestone: | → 3.3.1.5 |
|---|---|
| Owner: | changed from to |
| Resolution: | → Fixed |
| Status: | new → closed |
Fixed by revision [5355] in version: 3.3.1.5
Note:
See TracTickets
for help on using tickets.

WinAPI_GetLastErrorMessageW