Android: Add simple test harness for Sandbox

This commit is contained in:
Zach Riggle 2018-10-11 16:01:25 -05:00 committed by Dmitry Vyukov
parent 751b7baf94
commit caf1290068
4 changed files with 74 additions and 0 deletions

18
tools/android/Makefile Normal file
View File

@ -0,0 +1,18 @@
TARGET := libs/arm64-v8a/sandbox_test
SRC := jni/sandbox_test.c
all: $(TARGET)
$(TARGET): $(SRC)
ndk-build
push: $(TARGET)
adb push "$^" /data/local/tmp
run: push
adb shell /data/local/tmp/sandbox_test
clean:
rm -rf libs obj
.PHONY: all push run

View File

@ -0,0 +1,8 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := sandbox_test
LOCAL_SRC_FILES := sandbox_test.c
LOCAL_C_INCLUDES := ../../
include $(BUILD_EXECUTABLE)

View File

@ -0,0 +1,5 @@
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
APP_ABI:= arm64-v8a
APP_PLATFORM:=latest

View File

@ -0,0 +1,43 @@
#define GOOS_linux 1
#define SYZ_SANDBOX_ANDROID_UNTRUSTED_APP 1
#define SYZ_USE_TMP_DIR 1
#define fail(...) do { dprintf(2, __VA_ARGS__); dprintf(2, "\n"); perror("errno"); exit(1); } while(0)
#define error(...) do { dprintf(2, __VA_ARGS__); } while(0)
#define debug(...) do { dprintf(2, __VA_ARGS__); } while(0)
#include <stdlib.h>
#include <string.h>
void doexit(int status)
{
exit(status);
}
static void loop() {
exit(system("id"));
}
static void use_temporary_dir(void)
{
#if SYZ_SANDBOX_ANDROID_UNTRUSTED_APP
char tmpdir_template[] = "/data/data/syzkaller/syzkaller.XXXXXX";
#else
char tmpdir_template[] = "./syzkaller.XXXXXX";
#endif
char* tmpdir = mkdtemp(tmpdir_template);
if (!tmpdir)
fail("failed to mkdtemp");
if (chmod(tmpdir, 0777))
fail("failed to chmod");
if (chdir(tmpdir))
fail("failed to chdir");
}
#include "executor/common_linux.h"
int main() {
use_temporary_dir();
do_sandbox_android_untrusted_app();
}