From 636c0ff499e01b3dfe90264fc26f3df5ca6346cf Mon Sep 17 00:00:00 2001 From: Johan Redestig Date: Tue, 28 Aug 2012 08:18:28 +0200 Subject: [PATCH] Make transactGetSockaddr locale safe Explicitly use Locale.US transactGetSockaddr to avoid unexpected results in some locales. Change-Id: If8316e543e21e133dc0c821cc390a2b55fe6fcdf --- core/java/android/os/CommonTimeUtils.java | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/core/java/android/os/CommonTimeUtils.java b/core/java/android/os/CommonTimeUtils.java index 9081ee411d618..20755d92d2d5b 100644 --- a/core/java/android/os/CommonTimeUtils.java +++ b/core/java/android/os/CommonTimeUtils.java @@ -19,6 +19,7 @@ import java.net.InetAddress; import java.net.Inet4Address; import java.net.Inet6Address; import java.net.InetSocketAddress; +import java.util.Locale; import static libcore.io.OsConstants.*; class CommonTimeUtils { @@ -192,10 +193,11 @@ class CommonTimeUtils { if (AF_INET == type) { int addr = reply.readInt(); port = reply.readInt(); - addrStr = String.format("%d.%d.%d.%d", (addr >> 24) & 0xFF, - (addr >> 16) & 0xFF, - (addr >> 8) & 0xFF, - addr & 0xFF); + addrStr = String.format(Locale.US, "%d.%d.%d.%d", + (addr >> 24) & 0xFF, + (addr >> 16) & 0xFF, + (addr >> 8) & 0xFF, + addr & 0xFF); } else if (AF_INET6 == type) { int addr1 = reply.readInt(); int addr2 = reply.readInt(); @@ -207,11 +209,11 @@ class CommonTimeUtils { int flowinfo = reply.readInt(); int scope_id = reply.readInt(); - addrStr = String.format("[%04X:%04X:%04X:%04X:%04X:%04X:%04X:%04X]", - (addr1 >> 16) & 0xFFFF, addr1 & 0xFFFF, - (addr2 >> 16) & 0xFFFF, addr2 & 0xFFFF, - (addr3 >> 16) & 0xFFFF, addr3 & 0xFFFF, - (addr4 >> 16) & 0xFFFF, addr4 & 0xFFFF); + addrStr = String.format(Locale.US, "[%04X:%04X:%04X:%04X:%04X:%04X:%04X:%04X]", + (addr1 >> 16) & 0xFFFF, addr1 & 0xFFFF, + (addr2 >> 16) & 0xFFFF, addr2 & 0xFFFF, + (addr3 >> 16) & 0xFFFF, addr3 & 0xFFFF, + (addr4 >> 16) & 0xFFFF, addr4 & 0xFFFF); } if (null != addrStr) {