1 | I've gone through and compiled a list of all standard include UDF's (as of version 3.3.0.0) that are missing @error checks after DLLCall's, where either the return 'array' or a passed structure is accessed after. It's a big list, so I wish you the best of luck in getting this worked out. |
---|
2 | |
---|
3 | *ALSO another problem, many are using ANSI calls rather than Unicode (wide calls). I've marked down as much info regarding this as possible |
---|
4 | |
---|
5 | Note: Some additional details are added for certain functions. Most are only 1 DLL Call, some are more - I commented on some, but there may be more than one DLLCall on some I didn't comment on. |
---|
6 | |
---|
7 | <Clipboard.au3> |
---|
8 | _ClipBoard_Close |
---|
9 | _ClipBoard_CountFormats |
---|
10 | _ClipBoard_Empty |
---|
11 | _ClipBoard_EnumFormats |
---|
12 | _ClipBoard_GetDataEx |
---|
13 | _ClipBoard_GetFormatName: Additionally, the ANSI version is being called instead of the Unicode (wide) version |
---|
14 | _ClipBoard_GetOpenWindow |
---|
15 | _ClipBoard_GetOwner |
---|
16 | _ClipBoard_GetPriorityFormat |
---|
17 | _ClipBoard_GetSequenceNumber |
---|
18 | _ClipBoard_GetViewer |
---|
19 | _ClipBoard_IsFormatAvailable |
---|
20 | _ClipBoard_Open |
---|
21 | _ClipBoard_RegisterFormat |
---|
22 | _ClipBoard_SetDataEx |
---|
23 | _ClipBoard_SetViewer |
---|
24 | |
---|
25 | |
---|
26 | <Date.au3> |
---|
27 | |
---|
28 | _SetDate: DLLCalls: GetLocalTime (if @error, the next 2 DLLCall's should be avoided), & GetLastError |
---|
29 | _SetTime: DLLCalls: GetLocalTime (if @error, the next 2 DLLCall's should be avoided), & GetLastError |
---|
30 | _Date_Time_CompareFileTime |
---|
31 | _Date_Time_DOSDateTimeToFileTime |
---|
32 | _Date_Time_FileTimeToDOSDateTime |
---|
33 | _Date_Time_FileTimeToLocalFileTime |
---|
34 | _Date_Time_FileTimeToSystemTime |
---|
35 | _Date_Time_GetFileTime |
---|
36 | _Date_Time_GetLocalTime |
---|
37 | _Date_Time_GetSystemTime |
---|
38 | _Date_Time_GetSystemTimeAdjustment |
---|
39 | _Date_Time_GetSystemTimeAsFileTime |
---|
40 | _Date_Time_GetSystemTimes |
---|
41 | _Date_Time_GetTickCount |
---|
42 | _Date_Time_GetTimeZoneInformation |
---|
43 | _Date_Time_LocalFileTimeToFileTime |
---|
44 | _Date_Time_SetFileTime |
---|
45 | _Date_Time_SetLocalTime: 2 unchecked calls to SetLocalTime |
---|
46 | _Date_Time_SetSystemTime |
---|
47 | _Date_Time_SetSystemTimeAdjustment |
---|
48 | _Date_Time_SetTimeZoneInformation |
---|
49 | _Date_Time_SystemTimeToFileTime |
---|
50 | _Date_Time_SystemTimeToTzSpecificLocalTime |
---|
51 | _Date_Time_TzSpecificLocalTimeToSystemTime |
---|
52 | |
---|
53 | |
---|
54 | <EventLog.au3> |
---|
55 | |
---|
56 | NOTE on most of these functions: the ANSI version of the function is being called. These should be updated to Unicode (wide) calls. |
---|
57 | |
---|
58 | _EventLog__Backup |
---|
59 | _EventLog__Clear |
---|
60 | _EventLog__Close |
---|
61 | _EventLog__Count |
---|
62 | _EventLog__DeregisterSource |
---|
63 | _EventLog__Full: returns value in a DLLStruct that wouldn't be touched if there was a DLLCall error |
---|
64 | _EventLog__Notify |
---|
65 | _EventLog__Oldest: returns value in a DLLStruct that wouldn't be touched if there was a DLLCall error |
---|
66 | _EventLog__Open: |
---|
67 | _EventLog__OpenBackup |
---|
68 | _EventLog__Read: multiple unchecked ReadEventLogA calls |
---|
69 | _EventLog__RegisterSource |
---|
70 | _EventLog__Report |
---|
71 | |
---|
72 | |
---|
73 | <File.au3> |
---|
74 | |
---|
75 | _FilePrint: (should check for @error and Return 0 before other checks) |
---|
76 | |
---|
77 | <GDIPlus.au3> |
---|
78 | |
---|
79 | _GDIPlus_DrawImagePoints |
---|
80 | _GDIPlus_GraphicsDrawImageRect |
---|
81 | |
---|
82 | |
---|
83 | <GuiImageList.au3> |
---|
84 | |
---|
85 | _GUIImageList_Add |
---|
86 | _GUIImageList_AddMasked |
---|
87 | _GUIImageList_BeginDrag |
---|
88 | _GUIImageList_Copy |
---|
89 | _GUIImageList_Create |
---|
90 | _GUIImageList_Destroy |
---|
91 | _GUIImageList_DragEnter |
---|
92 | _GUIImageList_DragLeave |
---|
93 | _GUIImageList_DragMove |
---|
94 | _GUIImageList_DragShowNolock |
---|
95 | _GUIImageList_Draw |
---|
96 | _GUIImageList_DrawEx |
---|
97 | _GUIImageList_Duplicate |
---|
98 | _GUIImageList_GetBkColor |
---|
99 | _GUIImageList_GetIcon |
---|
100 | _GUIImageList_GetIconSizeEx |
---|
101 | _GUIImageList_GetImageCount |
---|
102 | _GUIImageList_GetImageInfoEx |
---|
103 | _GUIImageList_Merge |
---|
104 | _GUIImageList_Remove |
---|
105 | _GUIImageList_Replace |
---|
106 | _GUIImageList_ReplaceIcon |
---|
107 | _GUIImageList_SetBkColor |
---|
108 | _GUIImageList_SetDragCursorImage |
---|
109 | _GUIImageList_SetIconSize |
---|
110 | _GUIImageList_SetImageCount |
---|
111 | _GUIImageList_SetOverlayImage |
---|
112 | _GUIImageList_Swap |
---|
113 | |
---|
114 | |
---|
115 | <GuiListView.au3> |
---|
116 | |
---|
117 | _GUICtrlListView_Create |
---|
118 | _GUICtrlListView_Draw |
---|
119 | _GUICtrlListView_HitTest |
---|
120 | _GUICtrlListView_InsertMarkHitTest |
---|
121 | |
---|
122 | |
---|
123 | <GuiMenu.au3> |
---|
124 | |
---|
125 | _GUICtrlMenu_AddMenuItem: actually, this looks like a coding error also, as it looks at the return as a non-array (and DLLCall doesn't explicitly say it returns anything for error situations) |
---|
126 | _GUICtrlMenu_AppendMenu |
---|
127 | _GUICtrlMenu_CheckMenuItem |
---|
128 | _GUICtrlMenu_CheckRadioItem |
---|
129 | _GUICtrlMenu_CreateMenu |
---|
130 | _GUICtrlMenu_CreatePopup |
---|
131 | _GUICtrlMenu_DeleteMenu |
---|
132 | _GUICtrlMenu_DestroyMenu |
---|
133 | _GUICtrlMenu_DrawMenuBar |
---|
134 | _GUICtrlMenu_EnableMenuItem |
---|
135 | _GUICtrlMenu_EndMenu |
---|
136 | _GUICtrlMenu_GetItemCount |
---|
137 | _GUICtrlMenu_GetItemInfo |
---|
138 | _GUICtrlMenu_GetItemRectEx |
---|
139 | _GUICtrlMenu_GetItemSubMenu |
---|
140 | _GUICtrlMenu_GetItemText |
---|
141 | _GUICtrlMenu_GetMenu |
---|
142 | _GUICtrlMenu_GetMenuBarInfo |
---|
143 | _GUICtrlMenu_GetMenuDefaultItem |
---|
144 | _GUICtrlMenu_GetMenuInfo |
---|
145 | _GUICtrlMenu_GetSystemMenu |
---|
146 | _GUICtrlMenu_InsertMenuItem |
---|
147 | _GUICtrlMenu_InsertMenuItemEx |
---|
148 | _GUICtrlMenu_IsMenu |
---|
149 | _GUICtrlMenu_LoadMenu |
---|
150 | _GUICtrlMenu_MenuItemFromPoint |
---|
151 | _GUICtrlMenu_RemoveMenu |
---|
152 | _GUICtrlMenu_SetItemBitmaps |
---|
153 | _GUICtrlMenu_SetItemInfo |
---|
154 | _GUICtrlMenu_SetMenu |
---|
155 | _GUICtrlMenu_SetMenuDefaultItem |
---|
156 | _GUICtrlMenu_SetMenuInfo |
---|
157 | _GUICtrlMenu_TrackPopupMenu |
---|
158 | |
---|
159 | <GuiReBar.au3> |
---|
160 | |
---|
161 | _GUICtrlRebar_HitTest |
---|
162 | |
---|
163 | <GuiScrollBars.au3> |
---|
164 | |
---|
165 | _GUIScrollBars_Init: 4 different DLL calls w/o error checks |
---|
166 | |
---|
167 | <GuiStatusBar.au3> |
---|
168 | |
---|
169 | _GUICtrlStatusBar_Create |
---|
170 | _GUICtrlStatusBar_SetIcon |
---|
171 | |
---|
172 | |
---|
173 | <GuiTreeView.au3> |
---|
174 | |
---|
175 | _GUICtrlTreeView_GetImageListIconHandle |
---|
176 | _GUICtrlTreeView_SetIcon: multiple unchecked DLL calls |
---|
177 | |
---|
178 | |
---|
179 | <IE.au3> |
---|
180 | |
---|
181 | __IEControlGetObjFromHWND |
---|
182 | |
---|
183 | |
---|
184 | <Inet.au3> |
---|
185 | |
---|
186 | _INetGetSource: only 1 call is unchecked: InternetReadFile |
---|
187 | |
---|
188 | <Memory.au3> |
---|
189 | |
---|
190 | _MemGlobalAlloc |
---|
191 | _MemGlobalFree |
---|
192 | _MemGlobalLock |
---|
193 | _MemGlobalSize |
---|
194 | _MemGlobalUnlock |
---|
195 | _MemMoveMemory: while it doesn't access an array or structure, it's supposed to modify memory pointed to by passed parameters, so an @error + False return would make sense if the DLLCall failed |
---|
196 | _MemVirtualAlloc |
---|
197 | _MemVirtualAllocEx |
---|
198 | _MemVirtualFree |
---|
199 | _MemVirtualFreeEx |
---|
200 | |
---|
201 | <Misc.au3> |
---|
202 | |
---|
203 | _ChooseColor |
---|
204 | _ChooseFont |
---|
205 | _ClipPutFile: actually only 1 call (GetLastError) is fudged up - it doesn't check for @error, and accesses the returned value as a non-array variable |
---|
206 | _MouseTrap |
---|
207 | _Singleton: CreateMutex (array accessed after next DLL Call),& GetLastError |
---|
208 | _MISC_GetDeviceCaps |
---|
209 | _MISC_ReleaseDC |
---|
210 | |
---|
211 | <NamedPipes.au3> |
---|
212 | |
---|
213 | _NamedPipes_CallNamedPipe |
---|
214 | _NamedPipes_ConnectNamedPipe |
---|
215 | _NamedPipes_CreateNamedPipe |
---|
216 | _NamedPipes_CreatePipe |
---|
217 | _NamedPipes_DisconnectNamedPipe |
---|
218 | _NamedPipes_GetNamedPipeHandleState |
---|
219 | _NamedPipes_GetNamedPipeInfo |
---|
220 | _NamedPipes_PeekNamedPipe |
---|
221 | _NamedPipes_SetNamedPipeHandleState |
---|
222 | _NamedPipes_TransactNamedPipe |
---|
223 | _NamedPipes_WaitNamedPipe |
---|
224 | |
---|
225 | <NetShare.au3> |
---|
226 | |
---|
227 | _Net_Share_APIBufferFree |
---|
228 | _Net_Share_ConnectionEnum |
---|
229 | _Net_Share_FileClose |
---|
230 | _Net_Share_FileEnum |
---|
231 | _Net_Share_FileGetInfo |
---|
232 | _Net_Share_SessionDel |
---|
233 | _Net_Share_SessionEnum |
---|
234 | _Net_Share_SessionGetInfo |
---|
235 | _Net_Share_ShareAdd |
---|
236 | _Net_Share_ShareCheck |
---|
237 | _Net_Share_ShareDel |
---|
238 | _Net_Share_ShareEnum |
---|
239 | _Net_Share_ShareGetInfo |
---|
240 | _Net_Share_ShareSetInfo |
---|
241 | _Net_Share_StatisticsGetSvr |
---|
242 | _Net_Share_StatisticsGetWrk |
---|
243 | |
---|
244 | <Process.au3> |
---|
245 | |
---|
246 | _ProcessGetPriority |
---|
247 | |
---|
248 | <Security.au3> |
---|
249 | |
---|
250 | _Security__AdjustTokenPrivileges |
---|
251 | _Security__GetLengthSid |
---|
252 | _Security__GetTokenInformation |
---|
253 | _Security__ImpersonateSelf |
---|
254 | _Security__IsValidSid |
---|
255 | _Security__LookupAccountName |
---|
256 | _Security__LookupAccountSid |
---|
257 | _Security__LookupPrivilegeValue |
---|
258 | _Security__OpenProcessToken |
---|
259 | _Security__OpenThreadToken |
---|
260 | _Security__SidToStringSid |
---|
261 | _Security__StringSidToSid: actually, this looks like a coding error also, as it looks at the return as a non-array (and DLLCall doesn't explicitly say it returns anything for error situations) |
---|
262 | |
---|
263 | <Timers.au3> |
---|
264 | |
---|
265 | _Timer_GetIdleTime |
---|
266 | |
---|
267 | |
---|
268 | <WinApi.au3> |
---|
269 | |
---|
270 | _WinAPI_CloseHandle |
---|
271 | _WinAPI_CopyIcon |
---|
272 | _WinAPI_CreateBitmap |
---|
273 | _WinAPI_CreateCompatibleBitmap |
---|
274 | _WinAPI_CreateCompatibleDC |
---|
275 | _WinAPI_CreateWindowEx |
---|
276 | _WinAPI_DeleteDC |
---|
277 | _WinAPI_DestroyIcon |
---|
278 | _WinAPI_DrawIcon |
---|
279 | _WinAPI_DrawIconEx |
---|
280 | _WinAPI_ExpandEnvironmentStrings: also uses ANSI rather than Unicode (wide) variant |
---|
281 | _WinAPI_GetClientRect |
---|
282 | _WinAPI_GetCursorInfo |
---|
283 | _WinAPI_GetDC |
---|
284 | _WinAPI_GetDIBits |
---|
285 | _WinAPI_GetIconInfo |
---|
286 | _WinAPI_GetFileSizeEx |
---|
287 | _WinAPI_GetModuleHandle |
---|
288 | _WinAPI_GetObject |
---|
289 | _WinAPI_GetOverlappedResult |
---|
290 | _WinAPI_GetStdHandle |
---|
291 | _WinAPI_GetTextExtentPoint32 |
---|
292 | _WinAPI_LoadBitmap |
---|
293 | _WinAPI_LocalFree |
---|
294 | _WinAPI_MessageBeep |
---|
295 | _WinAPI_MulDiv |
---|
296 | _WinAPI_OpenProcess: a few unchecked ones |
---|
297 | _WinAPI_ReadFile |
---|
298 | _WinAPI_ReadProcessMemory |
---|
299 | _WinAPI_RegisterWindowMessage |
---|
300 | _WinAPI_SetEvent |
---|
301 | _WinAPI_SetHandleInformation |
---|
302 | _WinAPI_SetProcessAffinityMask |
---|
303 | _WinAPI_SetWindowPos |
---|
304 | _WinAPI_WaitForInputIdle |
---|
305 | _WinAPI_WaitForMultipleObjects |
---|
306 | _WinAPI_WaitForSingleObject |
---|
307 | _WinAPI_WriteConsole |
---|
308 | _WinAPI_WriteFile |
---|
309 | _WinAPI_WriteProcessMemory |
---|
310 | |
---|
311 | |
---|
312 | <WinNet.au3> |
---|
313 | |
---|
314 | NOTE on most of these functions: the ANSI version of the function is being called. These should be updated to Unicode (wide) calls. |
---|
315 | |
---|
316 | _WinNet_AddConnection |
---|
317 | _WinNet_AddConnection2 |
---|
318 | _WinNet_AddConnection3 |
---|
319 | _WinNet_CancelConnection |
---|
320 | _WinNet_CancelConnection2 |
---|
321 | _WinNet_CloseEnum |
---|
322 | _WinNet_ConnectionDialog |
---|
323 | _WinNet_ConnectionDialog1 |
---|
324 | _WinNet_DisconnectDialog |
---|
325 | _WinNet_DisconnectDialog1 |
---|
326 | _WinNet_EnumResource |
---|
327 | _WinNet_GetConnection |
---|
328 | _WinNet_GetConnectionPerformance |
---|
329 | _WinNet_GetLastError |
---|
330 | _WinNet_GetNetworkInformation |
---|
331 | _WinNet_GetProviderName |
---|
332 | _WinNet_GetResourceInformation |
---|
333 | _WinNet_GetResourceParent |
---|
334 | _WinNet_GetUniversalName |
---|
335 | _WinNet_GetUser |
---|
336 | _WinNet_OpenEnum |
---|
337 | _WinNet_RestoreConnection |
---|
338 | _WinNet_UseConnection |
---|
339 | |
---|
340 | |
---|
341 | ----------------------------------------------------------- |
---|
342 | Additionally, the following DLL calls, which have proper @error handling, are using the ANSI call variants rather than Unicode (wide) DllCalls: |
---|
343 | ----------------------------------------------------------- |
---|
344 | |
---|
345 | <Sound.au3> |
---|
346 | __RandomStr |
---|
347 | |
---|
348 | |
---|
349 | <WinAPI.au3> |
---|
350 | _WinAPI_FormatMessage |
---|
351 | _WinAPI_LoadLibrary |
---|
352 | _WinAPI_LoadLibraryEx |
---|
353 | _WinAPI_PostMessage |
---|
354 | _WinAPI_SetDefaultPrinter |
---|