Cherry-pick the relevant parts of master change
I566437e4fe10e1346858149120c50b3c20ca073f to avoid a conflict Test: atest FrameworksNetTests Change-Id: I7de4f67234bf97d58bddffa22272c7670398f56d
This commit is contained in:
@@ -16,10 +16,15 @@
|
|||||||
|
|
||||||
package android.net;
|
package android.net;
|
||||||
|
|
||||||
|
import static android.system.OsConstants.AF_INET;
|
||||||
|
import static android.system.OsConstants.AF_INET6;
|
||||||
|
|
||||||
|
import android.annotation.NonNull;
|
||||||
import android.annotation.UnsupportedAppUsage;
|
import android.annotation.UnsupportedAppUsage;
|
||||||
import android.net.shared.Inet4AddressUtils;
|
import android.net.shared.Inet4AddressUtils;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.system.ErrnoException;
|
import android.system.ErrnoException;
|
||||||
|
import android.system.Os;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
|
|
||||||
@@ -454,4 +459,30 @@ public class NetworkUtils {
|
|||||||
}
|
}
|
||||||
return routedIPCount;
|
return routedIPCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static final int[] ADDRESS_FAMILIES = new int[] {AF_INET, AF_INET6};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if the hostname is weakly validated.
|
||||||
|
* @param hostname Name of host to validate.
|
||||||
|
* @return True if it's a valid-ish hostname.
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public static boolean isWeaklyValidatedHostname(@NonNull String hostname) {
|
||||||
|
// TODO(b/34953048): Use a validation method that permits more accurate,
|
||||||
|
// but still inexpensive, checking of likely valid DNS hostnames.
|
||||||
|
final String weakHostnameRegex = "^[a-zA-Z0-9_.-]+$";
|
||||||
|
if (!hostname.matches(weakHostnameRegex)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int address_family : ADDRESS_FAMILIES) {
|
||||||
|
if (Os.inet_pton(address_family, hostname) != null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user