git-svn: trunk@4879
Török Edvin authored on 2009/03/01 19:40:00... | ... |
@@ -1,3 +1,8 @@ |
1 |
+Sun Mar 1 12:39:52 EET 2009 (edwin) |
|
2 |
+------------------------------------ |
|
3 |
+ * unit_tests/check_clamd.c: Fix make check when run as root. (bb |
|
4 |
+ #1431). |
|
5 |
+ |
|
1 | 6 |
Sun Mar 1 12:33:44 EET 2009 (edwin) |
2 | 7 |
------------------------------------ |
3 | 8 |
* clamd/server-th.c: downgrade warning message (bb #1433). |
... | ... |
@@ -118,7 +118,7 @@ static void conn_teardown(void) |
118 | 118 |
|
119 | 119 |
#define ACCDENIED BUILDDIR"/accdenied" |
120 | 120 |
#define ACCDENIED_REPLY ACCDENIED": Access denied. ERROR" |
121 |
- |
|
121 |
+static int isroot = 0; |
|
122 | 122 |
static void commands_setup(void) |
123 | 123 |
{ |
124 | 124 |
const char *nonempty = "NONEMPTYFILE"; |
... | ... |
@@ -138,6 +138,11 @@ static void commands_setup(void) |
138 | 138 |
fail_unless_fmt(write(fd, nonempty, strlen(nonempty)) == strlen(nonempty), |
139 | 139 |
"Failed to write into testfile: %s\n", strerror(errno)); |
140 | 140 |
close(fd); |
141 |
+ |
|
142 |
+ /* skip access denied tests when run as root, as root will ignore |
|
143 |
+ * permissions */ |
|
144 |
+ if (!geteuid()) |
|
145 |
+ isroot = 1; |
|
141 | 146 |
} |
142 | 147 |
|
143 | 148 |
static void commands_teardown(void) |
... | ... |
@@ -151,35 +156,36 @@ static struct basic_test { |
151 | 151 |
const char *extra; |
152 | 152 |
const char *reply; |
153 | 153 |
int support_old; |
154 |
+ int skiproot; |
|
154 | 155 |
} basic_tests[] = { |
155 |
- {"PING", NULL, "PONG", 1}, |
|
156 |
- {"RELOAD", NULL, "RELOADING", 1}, |
|
157 |
- {"VERSION", NULL, VERSION_REPLY, 1}, |
|
158 |
- {"SCAN "SCANFILE, NULL, FOUNDREPLY, 1}, |
|
159 |
- {"SCAN "CLEANFILE, NULL, CLEANREPLY, 1}, |
|
160 |
- {"CONTSCAN "SCANFILE, NULL, FOUNDREPLY, 1}, |
|
161 |
- {"CONTSCAN "CLEANFILE, NULL, CLEANREPLY, 1}, |
|
162 |
- {"MULTISCAN "SCANFILE, NULL, FOUNDREPLY, 1}, |
|
163 |
- {"MULTISCAN "CLEANFILE, NULL, CLEANREPLY, 1}, |
|
156 |
+ {"PING", NULL, "PONG", 1, 0}, |
|
157 |
+ {"RELOAD", NULL, "RELOADING", 1, 0}, |
|
158 |
+ {"VERSION", NULL, VERSION_REPLY, 1, 0}, |
|
159 |
+ {"SCAN "SCANFILE, NULL, FOUNDREPLY, 1, 0}, |
|
160 |
+ {"SCAN "CLEANFILE, NULL, CLEANREPLY, 1, 0}, |
|
161 |
+ {"CONTSCAN "SCANFILE, NULL, FOUNDREPLY, 1, 0}, |
|
162 |
+ {"CONTSCAN "CLEANFILE, NULL, CLEANREPLY, 1, 0}, |
|
163 |
+ {"MULTISCAN "SCANFILE, NULL, FOUNDREPLY, 1, 0}, |
|
164 |
+ {"MULTISCAN "CLEANFILE, NULL, CLEANREPLY, 1, 0}, |
|
164 | 165 |
/* unknown commnads */ |
165 |
- {"RANDOM", NULL, UNKNOWN_REPLY, 1}, |
|
166 |
+ {"RANDOM", NULL, UNKNOWN_REPLY, 1, 0}, |
|
166 | 167 |
/* commands invalid as first */ |
167 |
- {"END", NULL, UNKNOWN_REPLY, 1}, |
|
168 |
+ {"END", NULL, UNKNOWN_REPLY, 1, 0}, |
|
168 | 169 |
/* commands for nonexistent files */ |
169 |
- {"SCAN "NONEXISTENT, NULL, NONEXISTENT_REPLY, 1}, |
|
170 |
- {"CONTSCAN "NONEXISTENT, NULL, NONEXISTENT_REPLY, 1}, |
|
171 |
- {"MULTISCAN "NONEXISTENT, NULL, NONEXISTENT_REPLY, 1}, |
|
170 |
+ {"SCAN "NONEXISTENT, NULL, NONEXISTENT_REPLY, 1, 0}, |
|
171 |
+ {"CONTSCAN "NONEXISTENT, NULL, NONEXISTENT_REPLY, 1, 0}, |
|
172 |
+ {"MULTISCAN "NONEXISTENT, NULL, NONEXISTENT_REPLY, 1, 0}, |
|
172 | 173 |
/* commands for access denied files */ |
173 |
- {"SCAN "ACCDENIED, NULL, ACCDENIED_REPLY, 1}, |
|
174 |
- {"CONTSCAN "ACCDENIED, NULL, ACCDENIED_REPLY, 1}, |
|
175 |
- {"MULTISCAN "ACCDENIED, NULL, ACCDENIED_REPLY, 1}, |
|
174 |
+ {"SCAN "ACCDENIED, NULL, ACCDENIED_REPLY, 1, 1}, |
|
175 |
+ {"CONTSCAN "ACCDENIED, NULL, ACCDENIED_REPLY, 1, 1}, |
|
176 |
+ {"MULTISCAN "ACCDENIED, NULL, ACCDENIED_REPLY, 1, 1}, |
|
176 | 177 |
/* commands with invalid/missing arguments */ |
177 |
- {"SCAN", NULL, UNKNOWN_REPLY, 1}, |
|
178 |
- {"CONTSCAN", NULL, UNKNOWN_REPLY, 1}, |
|
179 |
- {"MULTISCAN", NULL, UNKNOWN_REPLY, 1}, |
|
178 |
+ {"SCAN", NULL, UNKNOWN_REPLY, 1, 0}, |
|
179 |
+ {"CONTSCAN", NULL, UNKNOWN_REPLY, 1, 0}, |
|
180 |
+ {"MULTISCAN", NULL, UNKNOWN_REPLY, 1, 0}, |
|
180 | 181 |
/* commands with invalid data */ |
181 |
- {"INSTREAM", "\xff\xff\xff\xff", "INSTREAM size limit exceeded. ERROR", 0}, /* too big chunksize */ |
|
182 |
- {"FILDES", "X", "No file descriptor received. ERROR", 1}, /* FILDES w/o ancillary data */ |
|
182 |
+ {"INSTREAM", "\xff\xff\xff\xff", "INSTREAM size limit exceeded. ERROR", 0, 0}, /* too big chunksize */ |
|
183 |
+ {"FILDES", "X", "No file descriptor received. ERROR", 1, 0}, /* FILDES w/o ancillary data */ |
|
183 | 184 |
}; |
184 | 185 |
|
185 | 186 |
static void *recvpartial(int sd, size_t *len, int partial) |
... | ... |
@@ -214,6 +220,7 @@ static void test_command(const char *cmd, size_t len, const char *extra, const c |
214 | 214 |
{ |
215 | 215 |
void *recvdata; |
216 | 216 |
ssize_t rc; |
217 |
+ |
|
217 | 218 |
rc = send(sockd, cmd, len, 0); |
218 | 219 |
fail_unless_fmt((size_t)rc == len, "Unable to send(): %s\n", strerror(errno)); |
219 | 220 |
|
... | ... |
@@ -238,6 +245,8 @@ START_TEST (test_basic_commands) |
238 | 238 |
struct basic_test *test = &basic_tests[_i]; |
239 | 239 |
char nsend[BUFSIZ], nreply[BUFSIZ]; |
240 | 240 |
|
241 |
+ if (test->skiproot && isroot) |
|
242 |
+ return; |
|
241 | 243 |
/* send nCOMMAND */ |
242 | 244 |
snprintf(nreply, sizeof(nreply), "%s\n", test->reply); |
243 | 245 |
snprintf(nsend, sizeof(nsend), "n%s\n", test->command); |
... | ... |
@@ -259,6 +268,9 @@ START_TEST (test_compat_commands) |
259 | 259 |
struct basic_test *test = &basic_tests[_i]; |
260 | 260 |
char nsend[BUFSIZ], nreply[BUFSIZ]; |
261 | 261 |
|
262 |
+ if (test->skiproot && isroot) |
|
263 |
+ return; |
|
264 |
+ |
|
262 | 265 |
if (!test->support_old) { |
263 | 266 |
snprintf(nreply, sizeof(nreply), "UNKNOWN COMMAND\n"); |
264 | 267 |
test->extra = NULL; |