https://git.reactos.org/?p=reactos.git;a=commitdiff;h=bb03da981cf476686b058…
commit bb03da981cf476686b05884bdcef3f507f3b88f8
Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
AuthorDate: Fri Apr 13 00:52:25 2018 +0200
Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
CommitDate: Fri Apr 13 01:02:20 2018 +0200
[EVENTVWR] Additions to the Event Viewer.
- Don't hardcode a buffer length in ExpandEnvironmentStringsW() call.
- If no file name is associated to a log (ErrorLog->FileName == NULL),
don't try to attempt looking at its file properties. This also allows
avoiding a crash in the FindFirstFileW() call under certain conditions
on Windows.
---
base/applications/mscutils/eventvwr/eventvwr.c | 44 ++++++++++++++++----------
1 file changed, 27 insertions(+), 17 deletions(-)
diff --git a/base/applications/mscutils/eventvwr/eventvwr.c
b/base/applications/mscutils/eventvwr/eventvwr.c
index 6801b275e4..f7e89d3207 100644
--- a/base/applications/mscutils/eventvwr/eventvwr.c
+++ b/base/applications/mscutils/eventvwr/eventvwr.c
@@ -3459,30 +3459,40 @@ Quit:
FileName = EventLog->FileName;
if (FileName && *FileName)
{
- ExpandEnvironmentStringsW(FileName, wszBuf, MAX_PATH);
+ ExpandEnvironmentStringsW(FileName, wszBuf, ARRAYSIZE(wszBuf));
FileName = wszBuf;
}
+ else
+ {
+ FileName = L"";
+ }
SetDlgItemTextW(hDlg, IDC_LOGFILE, FileName);
- /*
- * The general problem here (and in the shell as well) is that
- * GetFileAttributesEx fails for files that are opened without
- * shared access. To retrieve file information for those we need
- * to use something else: FindFirstFile, on the full file name.
- */
-
- Success = GetFileAttributesExW(FileName,
- GetFileExInfoStandard,
- (LPWIN32_FILE_ATTRIBUTE_DATA)&FileInfo);
- if (!Success)
+ if (FileName && *FileName)
+ {
+ /*
+ * The general problem here (and in the shell as well) is that
+ * GetFileAttributesEx fails for files that are opened without
+ * shared access. To retrieve file information for those we need
+ * to use something else: FindFirstFile, on the full file name.
+ */
+ Success = GetFileAttributesExW(FileName,
+ GetFileExInfoStandard,
+ (LPWIN32_FILE_ATTRIBUTE_DATA)&FileInfo);
+ if (!Success)
+ {
+ HANDLE hFind = FindFirstFileW(FileName, &FileInfo);
+ Success = (hFind != INVALID_HANDLE_VALUE);
+ if (Success)
+ FindClose(hFind);
+ }
+ }
+ else
{
- HANDLE hFind = FindFirstFileW(FileName, &FileInfo);
- Success = (hFind != INVALID_HANDLE_VALUE);
- if (Success)
- FindClose(hFind);
+ Success = FALSE;
}
- // Starting there, FileName is invalid (because it uses wszBuf)
+ /* Starting there, FileName becomes invalid because we are reusing wszBuf */
if (Success)
{