Create /data/local/tmp and add test writing to it

Bug: 185767624
Test: atest MicrodroidHostTestCases
Change-Id: Iba9c640e4e8e535f861836be97b6aa0830f86e8c
diff --git a/microdroid/init.rc b/microdroid/init.rc
index f304d00..15f9a47 100644
--- a/microdroid/init.rc
+++ b/microdroid/init.rc
@@ -128,6 +128,11 @@
 
     start tombstoned
 
+    # For security reasons, /data/local/tmp should always be empty.
+    # Do not place files or directories in /data/local/tmp
+    mkdir /data/local 0751 root root encryption=Require
+    mkdir /data/local/tmp 0771 shell shell
+
 service ueventd /system/bin/ueventd
     class core
     critical
diff --git a/tests/hostside/java/android/virt/test/MicrodroidTestCase.java b/tests/hostside/java/android/virt/test/MicrodroidTestCase.java
index a7cc06c..6dedb49 100644
--- a/tests/hostside/java/android/virt/test/MicrodroidTestCase.java
+++ b/tests/hostside/java/android/virt/test/MicrodroidTestCase.java
@@ -23,6 +23,7 @@
 import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
 import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
 import com.android.tradefed.util.CommandResult;
+import com.android.tradefed.util.FileUtil;
 import com.android.tradefed.util.RunUtil;
 
 import org.junit.After;
@@ -30,6 +31,8 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.io.File;
+import java.io.FileWriter;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -146,6 +149,24 @@
         String prop = executeCommand("adb -s " + MICRODROID_SERIAL + " shell getprop ro.hardware");
         assertThat(prop, is("microdroid"));
 
+        // Test writing to /data partition
+        File tmpFile = FileUtil.createTempFile("test", ".txt");
+        tmpFile.deleteOnExit();
+        FileWriter writer = new FileWriter(tmpFile);
+        writer.write("MicrodroidTest");
+        writer.close();
+
+        executeCommand(
+                "adb -s "
+                        + MICRODROID_SERIAL
+                        + " push "
+                        + tmpFile.getPath()
+                        + " /data/local/tmp/test.txt");
+        String catResult =
+                executeCommand(
+                        "adb -s " + MICRODROID_SERIAL + " shell cat /data/local/tmp/test.txt");
+        assertThat(catResult, is("MicrodroidTest"));
+
         // Shutdown microdroid
         executeCommand("adb -s localhost:" + TEST_VM_ADB_PORT + " shell reboot");
     }