libril: Fix network operator search

Change-Id: Ib904875c403942ec96dfa229080d9543d7c9b8fa
diff --git a/ril/libril/ril.cpp b/ril/libril/ril.cpp
index 44e6b86..5b600fd 100644
--- a/ril/libril/ril.cpp
+++ b/ril/libril/ril.cpp
@@ -284,6 +284,7 @@
 static int responseInts(Parcel &p, void *response, size_t responselen);
 static int responseIntsGetPreferredNetworkType(Parcel &p, void *response, size_t responselen);
 static int responseStrings(Parcel &p, void *response, size_t responselen);
+static int responseStringsNetworks(Parcel &p, void *response, size_t responselen);
 static int responseStrings(Parcel &p, void *response, size_t responselen, bool network_search);
 static int responseString(Parcel &p, void *response, size_t responselen);
 static int responseVoid(Parcel &p, void *response, size_t responselen);
@@ -2271,6 +2272,10 @@
     return responseStrings(p, response, responselen, false);
 }
 
+static int responseStringsNetworks(Parcel &p, void *response, size_t responselen) {
+    return responseStrings(p, response, responselen, true);
+}
+
 /** response is a char **, pointing to an array of char *'s */
 static int responseStrings(Parcel &p, void *response, size_t responselen, bool network_search) {
     int numStrings;
@@ -2291,11 +2296,17 @@
         char **p_cur = (char **) response;
 
         numStrings = responselen / sizeof(char *);
-        p.writeInt32 (numStrings);
+        if (network_search) {
+            p.writeInt32 ((numStrings / 5) * 4);
+        } else {
+            p.writeInt32 (numStrings);
+        }
 
         /* each string*/
         startResponse;
         for (int i = 0 ; i < numStrings ; i++) {
+            if (network_search && (i % 5 == 0))
+                continue;
             appendPrintBuf("%s%s,", printBuf, (char*)p_cur[i]);
             writeStringToParcel (p, p_cur[i]);
         }