OSDN Git Service

Fix escaping of characters
authorIrfan Sheriff <isheriff@google.com>
Mon, 24 May 2010 21:55:42 +0000 (14:55 -0700)
committerIrfan Sheriff <isheriff@google.com>
Mon, 24 May 2010 21:55:42 +0000 (14:55 -0700)
\ and " in SSID and password cause issues
with netd parsing. Fix it.

Bug: 2708960
Change-Id: I278ca21c0bbfd9dc430a2f9ae02828274a0d2376

services/java/com/android/server/NetworkManagementService.java

index 552bed4..5e0439c 100644 (file)
@@ -494,15 +494,20 @@ class NetworkManagementService extends INetworkManagementService.Stub {
              * argv8 - Max SCB
              */
             String str = String.format("softap set " + wlanIface + " " + softapIface +
-                                       " \"%s\" %s %s", wifiConfig.SSID,
+                                       " %s %s %s", convertQuotedString(wifiConfig.SSID),
                                        wifiConfig.allowedKeyManagement.get(KeyMgmt.WPA_PSK) ?
                                        "wpa2-psk" : "open",
-                                       wifiConfig.preSharedKey);
+                                       convertQuotedString(wifiConfig.preSharedKey));
             mConnector.doCommand(str);
         }
         mConnector.doCommand(String.format("softap startap"));
     }
 
+    private String convertQuotedString(String s) {
+      /* Replace \ with \\, then " with \" and add quotes at end */
+      return '"' + s.replaceAll("\\\\","\\\\\\\\").replaceAll("\"","\\\\\"") + '"';
+    }
+
     public void stopAccessPoint() throws IllegalStateException {
         mContext.enforceCallingOrSelfPermission(
                 android.Manifest.permission.CHANGE_NETWORK_STATE, "NetworkManagementService");
@@ -521,10 +526,10 @@ class NetworkManagementService extends INetworkManagementService.Stub {
             mConnector.doCommand(String.format("softap set " + wlanIface + " " + softapIface));
         } else {
             String str = String.format("softap set " + wlanIface + " " + softapIface +
-                                       " \"%s\" %s %s", wifiConfig.SSID,
+                                       " %s %s %s", convertQuotedString(wifiConfig.SSID),
                                        wifiConfig.allowedKeyManagement.get(KeyMgmt.WPA_PSK) ?
                                        "wpa2-psk" : "open",
-                                       wifiConfig.preSharedKey);
+                                       convertQuotedString(wifiConfig.preSharedKey));
             mConnector.doCommand(str);
         }
     }