Fix sensor-related snapshot resume failure.

A snapshot saved with the Tools r9 emulator couldn't be restored properly
because we added another sensor (proximity) in Tools r10. Provide code to
deal with this case properly and avoid a nasty crash.

Change-Id: Ifc395c12496a599eb4ae02e089fe8e13a90865b4
diff --git a/android/hw-sensors.c b/android/hw-sensors.c
index e191f68..c3ab12f 100644
--- a/android/hw-sensors.c
+++ b/android/hw-sensors.c
@@ -525,7 +525,7 @@
 
     /* check number of sensors */
     int32_t num_sensors = qemu_get_be32(f);
-    if (num_sensors != MAX_SENSORS) {
+    if (num_sensors > MAX_SENSORS) {
         D("%s: cannot load: snapshot requires %d sensors, %d available\n",
           __FUNCTION__, num_sensors, MAX_SENSORS);
         return -EIO;
@@ -533,7 +533,7 @@
 
     /* load sensor state */
     AndroidSensor i;
-    for (i = 0 ; i < MAX_SENSORS; i++) {
+    for (i = 0 ; i < num_sensors; i++) {
         Sensor* s = &h->sensors[i];
         s->enabled = qemu_get_be32(f);
 
@@ -567,6 +567,14 @@
         }
     }
 
+    /* The following is necessary when we resume a snaphost
+     * created by an older version of the emulator that provided
+     * less hardware sensors.
+     */
+    for ( ; i < MAX_SENSORS; i++ ) {
+        h->sensors[i].enabled = 0;
+    }
+
     return 0;
 }