Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(800)

Unified Diff: src/trusted/validator/validation_cache_test.cc

Issue 15039022: Enable meta-based validation for shared libraries. (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: Style Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/trusted/validator/validation_cache.c ('k') | src/trusted/validator/validation_metadata.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/trusted/validator/validation_cache_test.cc
diff --git a/src/trusted/validator/validation_cache_test.cc b/src/trusted/validator/validation_cache_test.cc
index d8b01ebde8d33e49d09b081b8220c0475d2e258c..c1531885f139eb4c2ca05659afeca58229d8fa9f 100644
--- a/src/trusted/validator/validation_cache_test.cc
+++ b/src/trusted/validator/validation_cache_test.cc
@@ -17,6 +17,7 @@
#include "native_client/src/trusted/validator/validation_cache.h"
#include "native_client/src/trusted/cpu_features/arch/x86/cpu_x86.h"
#include "native_client/src/trusted/service_runtime/include/sys/fcntl.h"
+#include "native_client/src/trusted/validator/rich_file_info.h"
#include "native_client/src/trusted/validator/validation_metadata.h"
#define CONTEXT_MARKER 31
@@ -252,124 +253,111 @@ TEST_F(ValidationCachingInterfaceTests, Metadata) {
extern "C" {
extern int SerializeNaClDescMetadata(
- uint8_t known_file,
- const char *file_name,
- uint32_t file_name_length,
+ const struct RichFileInfo *info,
uint8_t **buffer,
uint32_t *buffer_length);
extern int DeserializeNaClDescMetadata(
- uint8_t *buffer,
+ const uint8_t *buffer,
uint32_t buffer_length,
- uint8_t *known_file,
- char **file_name,
- uint32_t *file_name_length);
+ struct RichFileInfo *info);
}
class ValidationCachingSerializationTests : public ::testing::Test {
protected:
+ struct RichFileInfo info;
uint8_t *buffer;
uint32_t buffer_length;
- uint8_t known_file;
- char *file_name;
- uint32_t file_name_length;
+ struct RichFileInfo inp;
+ struct RichFileInfo outp;
void SetUp() {
buffer = 0;
buffer_length = 0;
- known_file = 0;
- file_name = 0;
- file_name_length = 0;
+ RichFileInfoCtor(&inp);
+ RichFileInfoCtor(&outp);
+ }
+
+ void TearDown() {
+ free(buffer);
+ // Don't free the inp structure, it does not contain malloced memory.
+ RichFileInfoDtor(&outp);
}
};
TEST_F(ValidationCachingSerializationTests, NormalOperationSimple) {
- EXPECT_EQ(0, SerializeNaClDescMetadata(0, "foo", 3, &buffer, &buffer_length));
- EXPECT_EQ(0, DeserializeNaClDescMetadata(buffer, buffer_length, &known_file,
- &file_name, &file_name_length));
- free(buffer);
-
- EXPECT_EQ((uint8_t) 0, known_file);
- EXPECT_EQ((uint32_t) 0, file_name_length);
- EXPECT_EQ(NULL, file_name);
+ inp.known_file = 0;
+ inp.file_path = "foo";
+ inp.file_path_length = 3;
+ EXPECT_EQ(0, SerializeNaClDescMetadata(&inp, &buffer, &buffer_length));
+ EXPECT_EQ(0, DeserializeNaClDescMetadata(buffer, buffer_length, &outp));
+
+ EXPECT_EQ((uint8_t) 0, outp.known_file);
+ EXPECT_EQ((uint32_t) 0, outp.file_path_length);
+ EXPECT_EQ(NULL, outp.file_path);
}
TEST_F(ValidationCachingSerializationTests, NormalOperationFull) {
- EXPECT_EQ(0, SerializeNaClDescMetadata(1, "foo", 3, &buffer, &buffer_length));
- EXPECT_EQ(0, DeserializeNaClDescMetadata(buffer, buffer_length, &known_file,
- &file_name, &file_name_length));
- free(buffer);
-
- EXPECT_EQ((uint8_t) 1, known_file);
- EXPECT_EQ((uint32_t) 3, file_name_length);
- EXPECT_EQ(0, memcmp("foo", file_name, file_name_length));
- free(file_name);
+ inp.known_file = 1;
+ inp.file_path = "foo";
+ inp.file_path_length = 3;
+
+ EXPECT_EQ(0, SerializeNaClDescMetadata(&inp, &buffer, &buffer_length));
+ EXPECT_EQ(0, DeserializeNaClDescMetadata(buffer, buffer_length, &outp));
+
+ EXPECT_EQ((uint8_t) 1, outp.known_file);
+ EXPECT_EQ((uint32_t) 3, outp.file_path_length);
+ EXPECT_EQ(0, memcmp("foo", outp.file_path, outp.file_path_length));
}
TEST_F(ValidationCachingSerializationTests, BadSizeSimple) {
- EXPECT_EQ(0, SerializeNaClDescMetadata(0, NULL, 0, &buffer, &buffer_length));
+ inp.known_file = 0;
+ EXPECT_EQ(0, SerializeNaClDescMetadata(&inp, &buffer, &buffer_length));
for (uint32_t i = -1; i <= buffer_length + 4; i++) {
/* The only case that is OK. */
if (i == buffer_length)
continue;
/* Wrong number of bytes, fail. */
- EXPECT_EQ(1, DeserializeNaClDescMetadata(buffer, i, &known_file,
- &file_name, &file_name_length));
+ EXPECT_EQ(1, DeserializeNaClDescMetadata(buffer, i, &outp));
}
- free(buffer);
}
TEST_F(ValidationCachingSerializationTests, BadSizeFull) {
- EXPECT_EQ(0, SerializeNaClDescMetadata(1, "foo", 3, &buffer, &buffer_length));
+ inp.known_file = 1;
+ inp.file_path = "foo";
+ inp.file_path_length = 3;
+ EXPECT_EQ(0, SerializeNaClDescMetadata(&inp, &buffer, &buffer_length));
for (uint32_t i = -1; i <= buffer_length + 4; i++) {
/* The only case that is OK. */
if (i == buffer_length)
continue;
/* Wrong number of bytes, fail. */
- EXPECT_EQ(1, DeserializeNaClDescMetadata(buffer, i, &known_file,
- &file_name, &file_name_length));
+ EXPECT_EQ(1, DeserializeNaClDescMetadata(buffer, i, &outp));
/* Paranoia. */
- EXPECT_EQ(0, known_file);
+ EXPECT_EQ(0, outp.known_file);
/* Make sure we don't leak on failure. */
- EXPECT_EQ(NULL, file_name);
+ EXPECT_EQ(NULL, outp.file_path);
}
- free(buffer);
}
-extern "C" {
- extern int SetFileOriginInfo(
- struct NaClDesc *desc,
- uint8_t known_file,
- const char *file_name,
- uint32_t file_name_length);
-
- extern int GetFileOriginInfo(
- struct NaClDesc *desc,
- uint8_t *known_file,
- char **file_name,
- uint32_t *file_name_length);
-}
-
-char *AN_ARBITRARY_FILE_PATH = NULL;
+static char *AN_ARBITRARY_FILE_PATH = NULL;
class ValidationCachingFileOriginTests : public ::testing::Test {
protected:
struct NaClDesc *desc;
- uint8_t known_file;
- char *file_name;
- uint32_t file_name_length;
+ struct RichFileInfo inp;
+ struct RichFileInfo outp;
void SetUp() {
struct NaClHostDesc *host_desc = NULL;
int fd = open(AN_ARBITRARY_FILE_PATH, O_RDONLY);
desc = NULL;
- known_file = 0;
- file_name = NULL;
- file_name_length = 0;
+ RichFileInfoCtor(&inp);
+ RichFileInfoCtor(&outp);
ASSERT_NE(-1, fd);
host_desc = NaClHostDescPosixMake(fd, NACL_ABI_O_RDONLY);
@@ -378,35 +366,39 @@ class ValidationCachingFileOriginTests : public ::testing::Test {
}
void TearDown() {
- free(file_name);
+ // Don't free the inp structure, it does not contain malloced memory.
+ RichFileInfoDtor(&outp);
NaClDescSafeUnref(desc);
}
};
TEST_F(ValidationCachingFileOriginTests, None) {
- EXPECT_EQ(1, GetFileOriginInfo(desc, &known_file, &file_name,
- &file_name_length));
+ EXPECT_EQ(1, GetFileOriginInfo(desc, &outp));
}
TEST_F(ValidationCachingFileOriginTests, Simple) {
- EXPECT_EQ(0, SetFileOriginInfo(desc, 0, "foobar", 6));
- EXPECT_EQ(0, GetFileOriginInfo(desc, &known_file, &file_name,
- &file_name_length));
-
- EXPECT_EQ(0, known_file);
- EXPECT_EQ((uint32_t) 0, file_name_length);
- EXPECT_EQ(NULL, file_name);
+ inp.known_file = 0;
+ inp.file_path = "foobar";
+ inp.file_path_length = 6;
+ EXPECT_EQ(0, SetFileOriginInfo(desc, &inp));
+ EXPECT_EQ(0, GetFileOriginInfo(desc, &outp));
+
+ EXPECT_EQ(0, outp.known_file);
+ EXPECT_EQ((uint32_t) 0, outp.file_path_length);
+ EXPECT_EQ(NULL, outp.file_path);
}
TEST_F(ValidationCachingFileOriginTests, Full) {
- EXPECT_EQ(0, SetFileOriginInfo(desc, 1, "foobar", 6));
- EXPECT_EQ(0, GetFileOriginInfo(desc, &known_file, &file_name,
- &file_name_length));
-
- EXPECT_EQ(1, known_file);
- EXPECT_EQ((uint32_t) 6, file_name_length);
- EXPECT_EQ(0, memcmp("foobar", file_name, file_name_length));
+ inp.known_file = 1;
+ inp.file_path = "foobar";
+ inp.file_path_length = 6;
+ EXPECT_EQ(0, SetFileOriginInfo(desc, &inp));
+ EXPECT_EQ(0, GetFileOriginInfo(desc, &outp));
+
+ EXPECT_EQ(1, outp.known_file);
+ EXPECT_EQ((uint32_t) 6, outp.file_path_length);
+ EXPECT_EQ(0, memcmp("foobar", outp.file_path, outp.file_path_length));
}
// Test driver function.
« no previous file with comments | « src/trusted/validator/validation_cache.c ('k') | src/trusted/validator/validation_metadata.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698