[PATCH 1/2] attrib: Avoid crash when called without parameter.
Bernhard Übelacker
bernhardu at mailbox.org
Wed Sep 8 07:55:43 CDT 2021
If attrib is called without any parameter the variable originalname
is used uninitialized.
Signed-off-by: Bernhard Übelacker <bernhardu at mailbox.org>
---
C:\>attrib
wine: Unhandled page fault on write access to 000000007B027406 at address 0000000000402937 (thread 0110), starting debugger...
Unhandled exception: page fault on write access to 0x7b027406 in 64-bit code (0x0000000000402937).
...
Backtrace:
=>0 0x0000000000402937 wmain+0x197(argc=<is not available>, argv=<is not available>) [Z:\home\bernhard\data\entwicklung\2021\wine\wine-git\wine-git\programs\attrib\attrib.c:295] in attrib (0x0000000000000000)
1 0x0000000000403455 wmainCRTStartup+0x64() [Z:\home\bernhard\data\entwicklung\2021\wine\wine-git\wine-git\dlls\msvcrt\crt_wmain.c:58] in attrib (0x0000000000000000)
2 0x000000007b62c7a9 BaseThreadInitThunk+0x8(unknown=<is not available>, entry=<is not available>, arg=<is not available>) [Z:\home\bernhard\data\entwicklung\2021\wine\wine-git\wine-git\dlls\kernel32\thread.c:61] in kernel32 (0x0000000000000000)
3 0x000000007bc56ee3 RtlUserThreadStart+0x82(entry=0x4033f0, arg=0x3f0000) [Z:\home\bernhard\data\entwicklung\2021\wine\wine-git\wine-git\dlls\ntdll\thread.c:241] in ntdll (0x0000000000000000)
0x0000000000402937 wmain+0x197 [Z:\home\bernhard\data\entwicklung\2021\wine\wine-git\wine-git\programs\attrib\attrib.c:295] in attrib: movw %r15w,(%r8)
295 *namepart = 0;
---
programs/attrib/attrib.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/programs/attrib/attrib.c b/programs/attrib/attrib.c
index 4813443449b..4ebcd2b8024 100644
--- a/programs/attrib/attrib.c
+++ b/programs/attrib/attrib.c
@@ -236,7 +236,7 @@ static BOOL ATTRIB_processdirectory(const WCHAR *rootdir, const WCHAR *filespec,
int __cdecl wmain(int argc, WCHAR *argv[])
{
WCHAR name[MAX_PATH];
- WCHAR *namepart;
+ WCHAR *namepart = 0;
WCHAR curdir[MAX_PATH];
WCHAR originalname[MAX_PATH];
DWORD attrib_set = 0;
@@ -252,7 +252,8 @@ int __cdecl wmain(int argc, WCHAR *argv[])
}
/* By default all files from current directory are taken into account */
- lstrcpyW(name, L"*");
+ GetCurrentDirectoryW(ARRAY_SIZE(originalname), originalname);
+ lstrcatW(originalname, L"\\*");
while (i < argc) {
WCHAR *param = argv[i++];
--
2.30.2
More information about the wine-devel
mailing list