Merge "Fix handling of hidden access points" into jb-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
b312163dde
@ -156,7 +156,11 @@ public class WifiSsid implements Parcelable {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
if (octets.size() <= 0) return "";
|
||||
byte[] ssidBytes = octets.toByteArray();
|
||||
// Supplicant returns \x00\x00\x00\x00\x00\x00\x00\x00 hex string
|
||||
// for a hidden access point. Make sure we maintain the previous
|
||||
// behavior of returning empty string for this case.
|
||||
if (octets.size() <= 0 || isArrayAllZeroes(ssidBytes)) return "";
|
||||
// TODO: Handle conversion to other charsets upon failure
|
||||
Charset charset = Charset.forName("UTF-8");
|
||||
CharsetDecoder decoder = charset.newDecoder()
|
||||
@ -164,7 +168,7 @@ public class WifiSsid implements Parcelable {
|
||||
.onUnmappableCharacter(CodingErrorAction.REPLACE);
|
||||
CharBuffer out = CharBuffer.allocate(32);
|
||||
|
||||
CoderResult result = decoder.decode(ByteBuffer.wrap(octets.toByteArray()), out, true);
|
||||
CoderResult result = decoder.decode(ByteBuffer.wrap(ssidBytes), out, true);
|
||||
out.flip();
|
||||
if (result.isError()) {
|
||||
return NONE;
|
||||
@ -172,6 +176,13 @@ public class WifiSsid implements Parcelable {
|
||||
return out.toString();
|
||||
}
|
||||
|
||||
private boolean isArrayAllZeroes(byte[] ssidBytes) {
|
||||
for (int i = 0; i< ssidBytes.length; i++) {
|
||||
if (ssidBytes[i] != 0) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
public byte[] getOctets() {
|
||||
return octets.toByteArray();
|
||||
|
Reference in New Issue
Block a user