OSDN Git Service

cleanups and sanity check string length
authorKoushik Dutta <koushd@gmail.com>
Sun, 28 Jul 2013 05:09:48 +0000 (22:09 -0700)
committerKoushik Dutta <koushd@gmail.com>
Sun, 28 Jul 2013 05:10:16 +0000 (22:10 -0700)
Change-Id: I17be8f06edd5ec507ab9b0a14cf305be75afc067

Superuser/Superuser.iml [new file with mode: 0644]
Superuser/assets/install-recovery.sh
Superuser/jni/su/daemon.c
Superuser/libs/android-support-v4.jar [deleted file]

diff --git a/Superuser/Superuser.iml b/Superuser/Superuser.iml
new file mode 100644 (file)
index 0000000..040b1c3
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="FacetManager">
+    <facet type="android" name="Android">
+      <configuration />
+    </facet>
+  </component>
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
+      <sourceFolder url="file://$MODULE_DIR$/gen" isTestSource="false" />
+    </content>
+    <orderEntry type="jdk" jdkName="Android 4.2.2" jdkType="Android SDK" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="module" module-name="Widgets" />
+  </component>
+</module>
+
index 35e36b4..0018d8c 100755 (executable)
@@ -3,7 +3,7 @@ mount -orw,remount /
 mkdir /superuser
 mount -t tmpfs swap /superuser
 mount -oro,remount /
+
 cp /system/xbin/su /superuser
 chmod 6755 /superuser/su
 mount -oro,remount /superuser
index 72de818..b50a2b1 100644 (file)
@@ -62,6 +62,10 @@ static void write_int(int fd, int val) {
 
 static char* read_string(int fd) {
     int len = read_int(fd);
+    if (len > PATH_MAX) {
+        LOGE("string too long");
+        exit(-1);
+    }
     char* val = malloc(sizeof(char) * (len + 1));
     val[len] = '\0';
     int amount = read(fd, val, len);
@@ -149,9 +153,7 @@ static int daemon_accept(int fd) {
     int i;
     for (i = 0; i < argc; i++) {
         argv[i] = read_string(fd);
-        LOGD("arg: %s", argv[i]);
     }
-    LOGD("args done");
 
     char errfile[PATH_MAX];
     char outfile[PATH_MAX];
@@ -183,7 +185,6 @@ static int daemon_accept(int fd) {
     int ptm = -1;
     char* devname = NULL;
     if (atty) {
-        LOGD("opening ptm");
         ptm = open("/dev/ptmx", O_RDWR);
         if (ptm <= 0) {
             PLOGE("ptm");
@@ -229,7 +230,6 @@ static int daemon_accept(int fd) {
         close(fd);
 
         if (devname != NULL) {
-            LOGD("opening pts");
             int pts = open(devname, O_RDWR);
             if(pts < 0) {
                 PLOGE("pts");
@@ -263,7 +263,6 @@ static int daemon_accept(int fd) {
     }
 
     if (devname != NULL) {
-        LOGD("pumping ptm");
         // pump ptm across the socket
         pump_async(infd, ptm);
         pump(ptm, outfd);
@@ -380,21 +379,18 @@ int connect_daemon(int argc, char *argv[]) {
         exit(-1);
     }
 
-    LOGD("client is: %d", getpid());
+    LOGD("connecting client %d", getpid());
     write_int(socketfd, getpid());
     write_int(socketfd, isatty(STDIN_FILENO));
     write_int(socketfd, uid);
     write_int(socketfd, getppid());
     write_int(socketfd, argc);
-    LOGD("about to write args");
 
     int i;
     for (i = 0; i < argc; i++) {
-        LOGD("writing arg");
         write_string(socketfd, argv[i]);
     }
 
-    LOGD("waiting for server ack");
     // ack
     read_int(socketfd);
 
@@ -419,6 +415,6 @@ int connect_daemon(int argc, char *argv[]) {
     pump(outfd, STDOUT_FILENO);
 
     int code = read_int(socketfd);
-    LOGD("daemon client done %d", code);
+    LOGD("client exited %d", code);
     return code;
 }
diff --git a/Superuser/libs/android-support-v4.jar b/Superuser/libs/android-support-v4.jar
deleted file mode 100644 (file)
index 6080877..0000000
Binary files a/Superuser/libs/android-support-v4.jar and /dev/null differ