source: trunk/src/cutest_sh_unix.c@ 474

Last change on this file since 474 was 474, checked in by katerina, 9 years ago

Fix for ticket #372 (Replace obsolete smatch by clang in test suite).

File size: 4.6 KB
RevLine 
[24]1
2#include "config_xor.h"
3
4#include <string.h>
5#include "CuTest.h"
6#include "samhain.h"
7#include "sh_unix.h"
8
[171]9int malloc_count = 0;
10
11void Test_dnmalloc (CuTest *tc) {
12
[237]13 const int nalloc = 64 /* original dnmalloc 1.0-beta5 fails for >= 45 */;
[171]14 int j, i;
15 int sum;
16 int i_malloc = malloc_count;
17
18 char * buf;
19 char * area[256];
20
21 /* test reuse of last freed chunk */
22 buf = malloc(1024);
23 CuAssertPtrNotNull(tc, buf);
24 free(buf);
25 area[0] = malloc(1024);
26 CuAssertTrue(tc, buf == area[0]);
27 free(area[0]);
28
29 /* test realloc */
30 buf = malloc(16);
31 CuAssertPtrNotNull(tc, buf);
32 strcpy(buf, "testing realloc");
33 buf = realloc(buf, 32);
34 strcat(buf, "testing realloc");
35 CuAssertStrEquals(tc, "testing realloctesting realloc", buf);
36
37 i_malloc = malloc_count;
38
39 for (j = 0; j < 64; ++j)
40 {
41 buf = malloc((j+1) * 1024);
42 CuAssertPtrNotNull(tc, buf);
43#ifndef USE_SYSTEM_MALLOC
[474]44#ifndef __clang__
[171]45 CuAssertIntEquals (tc, malloc_count, (i_malloc + 1));
46#endif
[474]47#endif
[171]48 free(buf);
49#ifndef USE_SYSTEM_MALLOC
50 CuAssertIntEquals (tc, malloc_count, i_malloc);
51#endif
52 }
53
54 /* test realloc */
55 buf = malloc(16);
56 CuAssertPtrNotNull(tc, buf);
57 strcpy(buf, "testing realloc");
58 buf = realloc(buf, 32);
59 strcat(buf, "testing realloc");
60 CuAssertStrEquals(tc, "testing realloctesting realloc", buf);
61
62 i_malloc = malloc_count;
63
64 for (j = 0; j < 64; ++j)
65 {
66 buf = calloc(1, (j+1) * 1024);
67 CuAssertPtrNotNull(tc, buf);
68#ifndef USE_SYSTEM_MALLOC
69 CuAssertIntEquals (tc, malloc_count, (i_malloc + 1));
70#endif
71 sum = 0;
72 for (i = 0; i < ((j+1) * 1024); ++i)
73 sum += buf[i];
74 CuAssertIntEquals (tc, 0, sum);
75 free(buf);
76#ifndef USE_SYSTEM_MALLOC
77 CuAssertIntEquals (tc, malloc_count, i_malloc);
78#endif
79 }
80
81 /* test realloc */
82 buf = malloc(16);
83 CuAssertPtrNotNull(tc, buf);
84 strcpy(buf, "testing realloc");
85 buf = realloc(buf, 32);
86 strcat(buf, "testing realloc");
87 CuAssertStrEquals(tc, "testing realloctesting realloc", buf);
88
89 for (j = 0; j < nalloc; ++j)
90 {
91 area[j] = malloc((j+1) * 1024);
92 CuAssertPtrNotNull(tc, area[j]);
93#ifndef USE_SYSTEM_MALLOC
[237]94 /* CuAssertIntEquals (tc, malloc_count, (i_malloc + (j+1))); */
[171]95#endif
96 memset(area[j], (unsigned char) ('a'+1), (j+1) * 1024);
97 }
98
99 i_malloc = malloc_count;
100
101 for (j = 0; j < nalloc; ++j)
102 {
103 sum = 0;
104 for (i = 0; i < ((j+1) * 1024); ++i)
105 sum += area[j][i];
106 CuAssertIntEquals (tc, sum, ((j+1) * 1024 * ((unsigned char) ('a'+1))));
107 free(area[j]);
108#ifndef USE_SYSTEM_MALLOC
109 CuAssertIntEquals (tc, malloc_count, i_malloc - (j+1));
110#endif
111 }
112
113 /* test realloc */
114 buf = malloc(16);
115 CuAssertPtrNotNull(tc, buf);
116 strcpy(buf, "testing realloc");
117 buf = realloc(buf, 32);
118 strcat(buf, "testing realloc");
119 CuAssertStrEquals(tc, "testing realloctesting realloc", buf);
120
121
122 for (j = 0; j < 32; ++j)
123 {
124 i_malloc = malloc_count;
125 buf = malloc((j+1) * 1024 * 1024);
126 CuAssertPtrNotNull(tc, buf);
127 for (i = 0; i < 32; ++i)
128 {
129 area[i] = malloc((i+1) * 1024);
130 CuAssertPtrNotNull(tc, area[i]);
131 }
132 free(buf);
133 for (i = 0; i < 32; ++i)
134 {
135 free(area[i]);
136 }
137#ifndef USE_SYSTEM_MALLOC
138 CuAssertIntEquals (tc, malloc_count, i_malloc);
139#endif
140 }
141
142 /* test realloc */
143 buf = malloc(16);
144 CuAssertPtrNotNull(tc, buf);
145 strcpy(buf, "testing realloc");
146 buf = realloc(buf, 32);
147 strcat(buf, "testing realloc");
148 CuAssertStrEquals(tc, "testing realloctesting realloc", buf);
149}
150
151
[24]152void Test_sh_unix_lookup_page (CuTest *tc) {
153
[30]154 long pagesize = sh_unix_pagesize();
[24]155
[30]156 unsigned long base;
[24]157 int num_pages;
158
159 CuAssert (tc, "pagesize > 0", (pagesize > 0));
160
161 /* base = sh_unix_lookup_page(in_addr, len, *num_pages); */
162
163 base = sh_unix_lookup_page(0, pagesize, &num_pages);
164 CuAssert (tc, "base == 0", (base == 0));
165 CuAssertIntEquals (tc, num_pages, 1);
166
167 base = sh_unix_lookup_page(0, pagesize+1, &num_pages);
168 CuAssert (tc, "base == 0", (base == 0));
169 CuAssertIntEquals (tc, num_pages, 2);
170
171 base = sh_unix_lookup_page((void*)pagesize, pagesize, &num_pages);
172 CuAssert (tc, "base == 0", (base == (unsigned int)pagesize));
173 CuAssertIntEquals (tc, num_pages, 1);
174
175 base = sh_unix_lookup_page((void*)pagesize, pagesize+1, &num_pages);
176 CuAssert (tc, "base == 0", (base == (unsigned int)pagesize));
177 CuAssertIntEquals (tc, num_pages, 2);
178
179 base = sh_unix_lookup_page((void*)(pagesize-1), pagesize+1, &num_pages);
180 CuAssert (tc, "base == 0", (base == 0));
181 CuAssertIntEquals (tc, num_pages, 2);
182
183 base = sh_unix_lookup_page((void*)(pagesize-1), pagesize+2, &num_pages);
184 CuAssert (tc, "base == 0", (base == 0));
185 CuAssertIntEquals (tc, num_pages, 3);
186
187}
188
189
Note: See TracBrowser for help on using the repository browser.