blob: 98e2a61e66ff31c3ffee721d823dce5e26c860b6 [file] [log] [blame]
Will Drewrydecdfdc2011-09-27 15:13:54 -05001/* libminijail_unittest.c
2 * Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
3 * Use of this source code is governed by a BSD-style license that can be
4 * found in the LICENSE file.
5 *
6 * Test platform independent logic of minijail.
7 */
8
Will Drewry463c27a2011-10-21 15:52:43 -05009#include <errno.h>
10
Will Drewrydecdfdc2011-09-27 15:13:54 -050011#include "test_harness.h"
12
13#include "libminijail.h"
14#include "libminijail-private.h"
15
16/* Silence unused variable warnings. */
17TEST(silence_unused) {
18 EXPECT_STREQ(kLdPreloadEnvVar, kLdPreloadEnvVar);
19 EXPECT_STREQ(kFdEnvVar, kFdEnvVar);
20 EXPECT_STRNE(kFdEnvVar, kLdPreloadEnvVar);
21}
22
23FIXTURE(marshal) {
24 char buf[4096];
25 struct minijail *m;
26 struct minijail *j;
27 size_t size;
28};
29
30FIXTURE_SETUP(marshal) {
31 self->m = minijail_new();
32 self->j = minijail_new();
33 ASSERT_TRUE(self->m && self->j) TH_LOG("allocation failed");
34 self->size = minijail_size(self->m);
35 ASSERT_GT(sizeof(self->buf), self->size) {
36 TH_LOG("static buffer too small for test");
37 }
38}
39
40FIXTURE_TEARDOWN(marshal) {
41 minijail_destroy(self->m);
42 minijail_destroy(self->j);
43}
44
45TEST_F(marshal, empty) {
46 ASSERT_EQ(0, minijail_marshal(self->m, self->buf, sizeof(self->buf)));
47 EXPECT_EQ(0, minijail_unmarshal(self->j, self->buf, self->size));
48}
49
50TEST_F(marshal, 0xff) {
51 memset(self->buf, 0xff, sizeof(self->buf));
Will Drewry463c27a2011-10-21 15:52:43 -050052 /* Should fail on the first consumestr since a NUL will never be found. */
53 EXPECT_EQ(-EINVAL, minijail_unmarshal(self->j, self->buf, sizeof(self->buf)));
Will Drewrydecdfdc2011-09-27 15:13:54 -050054}
55
56TEST_F(marshal, short) {
57 ASSERT_EQ(0, minijail_marshal(self->m, self->buf, sizeof(self->buf)));
58 EXPECT_NE(0, minijail_unmarshal(self->j, self->buf, self->size / 2));
59}
60
61TEST_HARNESS_MAIN