From a6e559edb73886c626e0e5a95085d0ead767ceb7 Mon Sep 17 00:00:00 2001 From: Irfan Sheriff Date: Mon, 24 May 2010 14:55:42 -0700 Subject: [PATCH] Fix escaping of characters \ and " in SSID and password cause issues with netd parsing. Fix it. Bug: 2708960 Change-Id: I278ca21c0bbfd9dc430a2f9ae02828274a0d2376 --- .../android/server/NetworkManagementService.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/services/java/com/android/server/NetworkManagementService.java b/services/java/com/android/server/NetworkManagementService.java index 552bed4ca4c64..5e0439c953f99 100644 --- a/services/java/com/android/server/NetworkManagementService.java +++ b/services/java/com/android/server/NetworkManagementService.java @@ -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); } }