1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
#include "compat.h"
#include "tests.h"
#include "utils.h"
#include <unistd.h>
#include <signal.h>
int null_dev = -1;
static FILE* null_file = NULL;
MYASSERT_LOGDEF;
unsigned test_count = 0;
unsigned test_faild = 0;
void sigsegv_handler(int signal)
{
if (signal == SIGSEGV) {
ERRPRINT_BOTH("%s", "***** ACCESS VIOLATION *****");
fclose(null_file);
fclose(MYASSERT_LOGFILE);
exit(1);
}
}
int main(int argc, char** argv)
{
fprintf(stderr, "Running TESTS ..\n\n");
(void)argc;
if (signal(SIGSEGV, sigsegv_handler) == SIG_ERR) {
fprintf(stderr, "Could not setup a signal handler for memory acces violations!\n");
}
if (bInitCompat( LoadLibraryA(TEXT("KERNEL32.dll")), GetProcAddress ) != TRUE) {
fprintf(stderr, "bInitCompat(...) failed!\n");
return 1;
}
const char* null_devname = "nul";
null_file = fopen (null_devname, "w");
if (null_file == NULL) {
fprintf(stderr, "Could not open windows NULL device: %s", null_devname);
} else null_dev = _fileno(null_file);
MYASSERT_INIT;
MYASSERT(test_math());
MYASSERT(test_utils())
MYASSERT(test_heap());
MYASSERT(test_mem());
MYASSERT(test_memalign());
MYASSERT(test_aes());
MYASSERT(test_crypt());
MYASSERT(test_distorm());
MYASSERT(test_stdio());
MYASSERT(test_pe(argv[0]));
MYASSERT(test_http());
MYASSERT_SILENT( (puts("puts(...)\n") == 0) );
MYASSERT_SILENT( (__xputs("__xputs(...)\n") > 0) );
static char charset[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,.-#'?!";
char* rndstr = __randstring(4096, charset);
MYASSERT_SILENT( (__xprintf("---%s---\n", rndstr) > 0) );
COMPAT(free)(rndstr);
if (MYASSERT_RETVAL == 0) {
ERRPRINT_BOTH("SUCCESS | TESTS: %u", (unsigned)test_count);
} else {
ERRPRINT_BOTH("LAST FAILED with %d | FAILED/TESTS: %u/%u", MYASSERT_RETVAL, (unsigned)test_faild, (unsigned)test_count);
}
MYASSERT_RETURN;
}
char* test_randstring(size_t length)
{
static char charset[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,.-#'?!";
return __randstring(length, charset);;
}
char* test_randhexstring(size_t length)
{
static char hcharset[] = "0123456789abcdef";
return __randstring(length, hcharset);
}
int fprintf_setw(FILE *stream, size_t s_maxlen, const char *format, ...)
{
int ret;
static char tmp[BUFSIZ];
va_list va;
va_start(va, format);
ret = vsnprintf(tmp, BUFSIZ, format, va);
if (ret > 0 && (size_t)ret < s_maxlen && ret+s_maxlen < BUFSIZ)
{
for (size_t i = ret; i < s_maxlen; ++i)
tmp[i] = '.';
}
ret = fprintf(stream, "%s", tmp);
va_end(va);
return ret;
}
|