Browse code

Fix make check when run as root. (bb #1431).

git-svn: trunk@4879

Török Edvin authored on 2009/03/01 19:40:00
Showing 2 changed files
... ...
@@ -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;