am 74159657: Cherry-picked from c13daef7b on master. Do not merge.

* commit '74159657687aadab4c82e4fd7e7a54d16c045d95':
  Cherry-picked from c13daef7b on master. Do not merge.
diff --git a/adb/adb.c b/adb/adb.c
index e35c334..e7a28d2 100644
--- a/adb/adb.c
+++ b/adb/adb.c
@@ -940,24 +940,29 @@
         }
     }
 
-        /* for the device, start the usb transport if the
-        ** android usb device exists and the "service.adb.tcp.port" and
-        ** "persist.adb.tcp.port" properties are not set.
-        ** Otherwise start the network transport.
-        */
-    property_get("service.adb.tcp.port", value, "");
-    if (!value[0])
-        property_get("persist.adb.tcp.port", value, "");
-    if (sscanf(value, "%d", &port) == 1 && port > 0) {
-        // listen on TCP port specified by service.adb.tcp.port property
-        local_init(port);
-    } else if (access("/dev/android_adb", F_OK) == 0) {
+    int usb = 0;
+    if (access("/dev/android_adb", F_OK) == 0) {
         // listen on USB
         usb_init();
-    } else {
+        usb = 1;
+    }
+
+    // If one of these properties is set, also listen on that port
+    // If one of the properties isn't set and we couldn't listen on usb,
+    // listen on the default port.
+    property_get("service.adb.tcp.port", value, "");
+    if (!value[0]) {
+        property_get("persist.adb.tcp.port", value, "");
+    }
+    if (sscanf(value, "%d", &port) == 1 && port > 0) {
+        printf("using port=%d\n", port);
+        // listen on TCP port specified by service.adb.tcp.port property
+        local_init(port);
+    } else if (!usb) {
         // listen on default port
         local_init(DEFAULT_ADB_LOCAL_TRANSPORT_PORT);
     }
+
     D("adb_main(): pre init_jdwp()\n");
     init_jdwp();
     D("adb_main(): post init_jdwp()\n");
diff --git a/init/init.c b/init/init.c
index d10ca47..68e9f49 100755
--- a/init/init.c
+++ b/init/init.c
@@ -59,12 +59,12 @@
 #endif
 
 static char console[32];
-static char serialno[32];
-static char bootmode[32];
-static char baseband[32];
-static char carrier[32];
-static char bootloader[32];
-static char hardware[32];
+static char serialno[PROP_VALUE_MAX];
+static char bootmode[PROP_VALUE_MAX];
+static char baseband[PROP_VALUE_MAX];
+static char carrier[PROP_VALUE_MAX];
+static char bootloader[PROP_VALUE_MAX];
+static char hardware[PROP_VALUE_MAX];
 static unsigned revision = 0;
 static char qemu[32];
 
diff --git a/rootdir/init.rc b/rootdir/init.rc
index 145f642..2ad1c21 100644
--- a/rootdir/init.rc
+++ b/rootdir/init.rc
@@ -163,6 +163,8 @@
     mkdir /data/app-private 0771 system system
     mkdir /data/app 0771 system system
     mkdir /data/property 0700 root root
+    mkdir /data/ssh 0750 root shell
+    mkdir /data/ssh/empty 0700 root root
 
     # create dalvik-cache, so as to enforce our permissions
     mkdir /data/dalvik-cache 0771 system system
@@ -485,3 +487,6 @@
     socket dumpstate stream 0660 shell log
     disabled
     oneshot
+
+service sshd /system/bin/start-ssh
+    class main