FreeRDP
Loading...
Searching...
No Matches
TestFileDeleteFile.c
1
2#include <stdio.h>
3#include <stdlib.h>
4#include <winpr/crt.h>
5#include <winpr/file.h>
6#include <winpr/windows.h>
7
8#if !defined(_WIN32)
9#include <sys/stat.h>
10#endif
11
12static int secure_mkstemp(char* tmpname)
13{
14#if !defined(_WIN32)
15 const mode_t mask = umask(S_IRWXU);
16#endif
17 int fd = mkstemp(tmpname);
18#if !defined(_WIN32)
19 (void)umask(mask);
20#endif
21 return fd;
22}
23
24int TestFileDeleteFile(int argc, char* argv[])
25{
26 BOOL rc = FALSE;
27 int fd = 0;
28 char validA[] = "/tmp/valid-test-file-XXXXXX";
29 char validW[] = "/tmp/valid-test-file-XXXXXX";
30 WCHAR* validWW = NULL;
31 const char invalidA[] = "/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
32 WCHAR invalidW[sizeof(invalidA)] = { 0 };
33
34 (void)ConvertUtf8NToWChar(invalidA, ARRAYSIZE(invalidA), invalidW, ARRAYSIZE(invalidW));
35
36 WINPR_UNUSED(argc);
37 WINPR_UNUSED(argv);
38
39 rc = DeleteFileA(invalidA);
40 if (rc)
41 return -1;
42
43 rc = DeleteFileW(invalidW);
44 if (rc)
45 return -1;
46
47 fd = secure_mkstemp(validA);
48 if (fd < 0)
49 return -1;
50
51 rc = DeleteFileA(validA);
52 if (!rc)
53 return -1;
54
55 fd = secure_mkstemp(validW);
56 if (fd < 0)
57 return -1;
58
59 validWW = ConvertUtf8NToWCharAlloc(validW, ARRAYSIZE(validW), NULL);
60 if (validWW)
61 rc = DeleteFileW(validWW);
62 free(validWW);
63 if (!rc)
64 return -1;
65 return 0;
66}