James Hawkins wrote:
Hi,
Fix for bug 9809.
Changelog:
- Handle a few cases in FO_COPY that arise from not double-NULL
terminating the input.
dlls/shell32/shlfileop.c | 11 +++- dlls/shell32/tests/shlfileop.c | 122 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 130 insertions(+), 3 deletions(-)
Hi James,
+ /* no double-NULL terminator for pTo */ + memset(to, 'a', MAX_PATH); + lstrcpyA(to, "two.txt"); + shfo.pFrom = "one.txt\0"; + shfo.pTo = to; + shfo.fFlags = FOF_NOCONFIRMATION | FOF_SILENT | FOF_NOERRORUI; + retval = SHFileOperation(&shfo); + ok(retval == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", retval); + ok(DeleteFileA("one.txt"), "Expected file to exist\n"); + ok(DeleteFileA("two.txt"), "Expected file to exist\n"); + + createTestFile("one.txt"); + + /* no FOF_MULTIDESTFILES, two files in pTo */ + shfo.pFrom = "one.txt\0"; + shfo.pTo = "two.txt\0three.txt\0"; + shfo.fFlags = FOF_NOCONFIRMATION | FOF_SILENT | FOF_NOERRORUI; + retval = SHFileOperation(&shfo); + ok(retval == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", retval); + ok(DeleteFileA("one.txt"), "Expected file to exist\n"); + ok(DeleteFileA("two.txt"), "Expected file to exist\n"); + + createTestFile("one.txt"); + + /* no double-NULL terminator for pTo */ + memset(to, 'a', MAX_PATH); + lstrcpyA(to, "two.txt"); + shfo.pFrom = "one.txt\0"; + shfo.pTo = to; + shfo.fFlags = FOF_NOCONFIRMATION | FOF_SILENT | FOF_NOERRORUI; + retval = SHFileOperation(&shfo); + ok(retval == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", retval); + ok(DeleteFileA("one.txt"), "Expected file to exist\n"); + ok(DeleteFileA("two.txt"), "Expected file to exist\n");
Isn't the last test the same as the first (in the above piece of code) ?