diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2017-11-29 00:08:19 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2017-11-29 00:08:19 +0000 |
commit | ca2d6448022d2d281cc96986ca4dc526b2795eaf (patch) | |
tree | a36c61b262b448117764ddc630a29e4d8982fe66 | |
parent | e3cd53671e05d6e861817c21fbc162f8c7fc17be (diff) | |
parent | 6b815ed6cde82df78ed12a60e4b9acfcc3fe9412 (diff) | |
download | libcore-android-8.1.0_r18.tar.gz |
Snap for 4448085 from 6b815ed6cde82df78ed12a60e4b9acfcc3fe9412 to oc-m3-releaseandroid-8.1.0_r9android-8.1.0_r7android-8.1.0_r22android-8.1.0_r21android-8.1.0_r18android-8.1.0_r17android-8.1.0_r14android-8.1.0_r13oreo-m5-releaseoreo-m3-release
Change-Id: I59105ef5437aa03ec074eca66fe8c67d5a0c974c
-rw-r--r-- | luni/src/main/native/NetworkUtilities.cpp | 12 | ||||
-rw-r--r-- | luni/src/main/native/libcore_io_Linux.cpp | 70 | ||||
-rw-r--r-- | ojluni/src/main/java/java/lang/SecurityManager.java | 6 | ||||
-rw-r--r-- | ojluni/src/main/java/java/text/SimpleDateFormat.java | 4 | ||||
-rw-r--r-- | ojluni/src/main/java/java/util/Locale.java | 2 |
5 files changed, 85 insertions, 9 deletions
diff --git a/luni/src/main/native/NetworkUtilities.cpp b/luni/src/main/native/NetworkUtilities.cpp index b259814e891..66daf9c12a1 100644 --- a/luni/src/main/native/NetworkUtilities.cpp +++ b/luni/src/main/native/NetworkUtilities.cpp @@ -99,9 +99,15 @@ static bool inetAddressToSockaddr(JNIEnv* env, jobject inetAddress, int port, so // Get holder. static jfieldID holderFid = env->GetFieldID(JniConstants::inetAddressClass, "holder", "Ljava/net/InetAddress$InetAddressHolder;"); + if (holderFid == NULL) { + return false; + } ScopedLocalRef<jobject> holder(env, env->GetObjectField(inetAddress, holderFid)); // Get the address family. static jfieldID familyFid = env->GetFieldID(JniConstants::inetAddressHolderClass, "family", "I"); + if (familyFid == NULL) { + return false; + } ss.ss_family = env->GetIntField(holder.get(), familyFid); if (ss.ss_family == AF_UNSPEC) { sa_len = sizeof(ss.ss_family); @@ -117,6 +123,9 @@ static bool inetAddressToSockaddr(JNIEnv* env, jobject inetAddress, int port, so // Get the byte array that stores the IP address bytes in the InetAddress. static jmethodID bytesMid = env->GetMethodID(JniConstants::inetAddressClass, "getAddress", "()[B"); + if (bytesMid == NULL) { + return false; + } ScopedLocalRef<jbyteArray> addressBytes(env, reinterpret_cast<jbyteArray>(env->CallObjectMethod(inetAddress, bytesMid))); if (env->ExceptionCheck()) { return false; @@ -143,6 +152,9 @@ static bool inetAddressToSockaddr(JNIEnv* env, jobject inetAddress, int port, so static jfieldID holder6Fid = env->GetFieldID(JniConstants::inet6AddressClass, "holder6", "Ljava/net/Inet6Address$Inet6AddressHolder;"); + if (holder6Fid == NULL) { + return false; + } ScopedLocalRef<jobject> holder6(env, env->GetObjectField(inetAddress, holder6Fid)); static jfieldID scopeFid = env->GetFieldID(JniConstants::inet6AddressHolderClass, "scope_id", "I"); sin6.sin6_scope_id = env->GetIntField(holder6.get(), scopeFid); diff --git a/luni/src/main/native/libcore_io_Linux.cpp b/luni/src/main/native/libcore_io_Linux.cpp index 0f3a4a02a81..e3d67a6d157 100644 --- a/luni/src/main/native/libcore_io_Linux.cpp +++ b/luni/src/main/native/libcore_io_Linux.cpp @@ -374,11 +374,16 @@ static jobject makeSocketAddress(JNIEnv* env, const sockaddr_storage& ss, const } static jmethodID ctor = env->GetMethodID(JniConstants::inetSocketAddressClass, "<init>", "(Ljava/net/InetAddress;I)V"); + if (ctor == NULL) { + return NULL; + } return env->NewObject(JniConstants::inetSocketAddressClass, ctor, inetAddress, port); } else if (ss.ss_family == AF_UNIX) { static jmethodID ctor = env->GetMethodID(JniConstants::unixSocketAddressClass, "<init>", "([B)V"); - + if (ctor == NULL) { + return NULL; + } jbyteArray javaSunPath = getUnixSocketPath(env, ss, sa_len); if (!javaSunPath) { return NULL; @@ -388,6 +393,9 @@ static jobject makeSocketAddress(JNIEnv* env, const sockaddr_storage& ss, const const struct sockaddr_nl* nl_addr = reinterpret_cast<const struct sockaddr_nl*>(&ss); static jmethodID ctor = env->GetMethodID(JniConstants::netlinkSocketAddressClass, "<init>", "(II)V"); + if (ctor == NULL) { + return NULL; + } return env->NewObject(JniConstants::netlinkSocketAddressClass, ctor, static_cast<jint>(nl_addr->nl_pid), static_cast<jint>(nl_addr->nl_groups)); @@ -395,6 +403,9 @@ static jobject makeSocketAddress(JNIEnv* env, const sockaddr_storage& ss, const const struct sockaddr_ll* sll = reinterpret_cast<const struct sockaddr_ll*>(&ss); static jmethodID ctor = env->GetMethodID(JniConstants::packetSocketAddressClass, "<init>", "(SISB[B)V"); + if (ctor == NULL) { + return NULL; + } ScopedLocalRef<jbyteArray> byteArray(env, env->NewByteArray(sll->sll_halen)); if (byteArray.get() == NULL) { return NULL; @@ -420,6 +431,9 @@ static jobject makeStructPasswd(JNIEnv* env, const struct passwd& pw) { TO_JAVA_STRING(pw_shell, pw.pw_shell); static jmethodID ctor = env->GetMethodID(JniConstants::structPasswdClass, "<init>", "(Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;)V"); + if (ctor == NULL) { + return NULL; + } return env->NewObject(JniConstants::structPasswdClass, ctor, pw_name, static_cast<jint>(pw.pw_uid), static_cast<jint>(pw.pw_gid), pw_dir, pw_shell); } @@ -427,6 +441,9 @@ static jobject makeStructPasswd(JNIEnv* env, const struct passwd& pw) { static jobject makeStructTimespec(JNIEnv* env, const struct timespec& ts) { static jmethodID ctor = env->GetMethodID(JniConstants::structTimespecClass, "<init>", "(JJ)V"); + if (ctor == NULL) { + return NULL; + } return env->NewObject(JniConstants::structTimespecClass, ctor, static_cast<jlong>(ts.tv_sec), static_cast<jlong>(ts.tv_nsec)); } @@ -434,19 +451,39 @@ static jobject makeStructTimespec(JNIEnv* env, const struct timespec& ts) { static jobject makeStructStat(JNIEnv* env, const struct stat64& sb) { static jmethodID ctor = env->GetMethodID(JniConstants::structStatClass, "<init>", "(JJIJIIJJLandroid/system/StructTimespec;Landroid/system/StructTimespec;Landroid/system/StructTimespec;JJ)V"); + if (ctor == NULL) { + return NULL; + } + + jobject atim_timespec = makeStructTimespec(env, sb.st_atim); + if (atim_timespec == NULL) { + return NULL; + } + jobject mtim_timespec = makeStructTimespec(env, sb.st_mtim); + if (mtim_timespec == NULL) { + return NULL; + } + jobject ctim_timespec = makeStructTimespec(env, sb.st_ctim); + if (ctim_timespec == NULL) { + return NULL; + } + return env->NewObject(JniConstants::structStatClass, ctor, static_cast<jlong>(sb.st_dev), static_cast<jlong>(sb.st_ino), static_cast<jint>(sb.st_mode), static_cast<jlong>(sb.st_nlink), static_cast<jint>(sb.st_uid), static_cast<jint>(sb.st_gid), static_cast<jlong>(sb.st_rdev), static_cast<jlong>(sb.st_size), - makeStructTimespec(env, sb.st_atim), makeStructTimespec(env, sb.st_mtim), - makeStructTimespec(env, sb.st_ctim), static_cast<jlong>(sb.st_blksize), - static_cast<jlong>(sb.st_blocks)); + atim_timespec, mtim_timespec, ctim_timespec, + static_cast<jlong>(sb.st_blksize), static_cast<jlong>(sb.st_blocks)); } static jobject makeStructStatVfs(JNIEnv* env, const struct statvfs& sb) { static jmethodID ctor = env->GetMethodID(JniConstants::structStatVfsClass, "<init>", "(JJJJJJJJJJJ)V"); + if (ctor == NULL) { + return NULL; + } + return env->NewObject(JniConstants::structStatVfsClass, ctor, static_cast<jlong>(sb.f_bsize), static_cast<jlong>(sb.f_frsize), @@ -463,18 +500,27 @@ static jobject makeStructStatVfs(JNIEnv* env, const struct statvfs& sb) { static jobject makeStructLinger(JNIEnv* env, const struct linger& l) { static jmethodID ctor = env->GetMethodID(JniConstants::structLingerClass, "<init>", "(II)V"); + if (ctor == NULL) { + return NULL; + } return env->NewObject(JniConstants::structLingerClass, ctor, l.l_onoff, l.l_linger); } static jobject makeStructTimeval(JNIEnv* env, const struct timeval& tv) { static jmethodID ctor = env->GetMethodID(JniConstants::structTimevalClass, "<init>", "(JJ)V"); + if (ctor == NULL) { + return NULL; + } return env->NewObject(JniConstants::structTimevalClass, ctor, static_cast<jlong>(tv.tv_sec), static_cast<jlong>(tv.tv_usec)); } static jobject makeStructUcred(JNIEnv* env, const struct ucred& u __unused) { - static jmethodID ctor = env->GetMethodID(JniConstants::structUcredClass, "<init>", "(III)V"); - return env->NewObject(JniConstants::structUcredClass, ctor, u.pid, u.uid, u.gid); + static jmethodID ctor = env->GetMethodID(JniConstants::structUcredClass, "<init>", "(III)V"); + if (ctor == NULL) { + return NULL; + } + return env->NewObject(JniConstants::structUcredClass, ctor, u.pid, u.uid, u.gid); } static jobject makeStructUtsname(JNIEnv* env, const struct utsname& buf) { @@ -485,6 +531,9 @@ static jobject makeStructUtsname(JNIEnv* env, const struct utsname& buf) { TO_JAVA_STRING(machine, buf.machine); static jmethodID ctor = env->GetMethodID(JniConstants::structUtsnameClass, "<init>", "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V"); + if (ctor == NULL) { + return NULL; + } return env->NewObject(JniConstants::structUtsnameClass, ctor, sysname, nodename, release, version, machine); }; @@ -1324,6 +1373,9 @@ static jobject Linux_getrlimit(JNIEnv* env, jobject, jint resource) { ScopedLocalRef<jclass> rlimit_class(env, env->FindClass("android/system/StructRlimit")); jmethodID ctor = env->GetMethodID(rlimit_class.get(), "<init>", "(JJ)V"); + if (ctor == NULL) { + return NULL; + } return env->NewObject(rlimit_class.get(), ctor, static_cast<jlong>(r.rlim_cur), static_cast<jlong>(r.rlim_max)); @@ -1457,6 +1509,9 @@ static jbyteArray Linux_getxattr(JNIEnv* env, jobject, jstring javaPath, static jobjectArray Linux_getifaddrs(JNIEnv* env, jobject) { static jmethodID ctor = env->GetMethodID(JniConstants::structIfaddrs, "<init>", "(Ljava/lang/String;ILjava/net/InetAddress;Ljava/net/InetAddress;Ljava/net/InetAddress;[B)V"); + if (ctor == NULL) { + return NULL; + } ifaddrs* ifaddr; int rc = TEMP_FAILURE_RETRY(getifaddrs(&ifaddr)); @@ -1543,6 +1598,9 @@ static jobjectArray Linux_getifaddrs(JNIEnv* env, jobject) { jobject o = env->NewObject(JniConstants::structIfaddrs, ctor, name, flags, addr, netmask, broad, hwaddr); + if (o == NULL) { + return NULL; + } env->SetObjectArrayElement(result, index, o); } diff --git a/ojluni/src/main/java/java/lang/SecurityManager.java b/ojluni/src/main/java/java/lang/SecurityManager.java index 5ef885e8191..b7053e0362c 100644 --- a/ojluni/src/main/java/java/lang/SecurityManager.java +++ b/ojluni/src/main/java/java/lang/SecurityManager.java @@ -36,6 +36,12 @@ import java.net.InetAddress; // other other methods for security purposes. /** * Legacy security code; do not use. + * + * <p>Security managers do <i>not</i> provide a secure environment for + * executing untrusted code and are unsupported on Android. Untrusted code + * cannot be safely isolated within a single VM on Android. Application + * developers can assume that there's no SecurityManager installed, + * i.e. {@link java.lang.System#getSecurityManager()} will return null. */ public class SecurityManager { diff --git a/ojluni/src/main/java/java/text/SimpleDateFormat.java b/ojluni/src/main/java/java/text/SimpleDateFormat.java index 6ae905754aa..229896b467c 100644 --- a/ojluni/src/main/java/java/text/SimpleDateFormat.java +++ b/ojluni/src/main/java/java/text/SimpleDateFormat.java @@ -128,7 +128,7 @@ import static java.text.DateFormatSymbols.*; * <td>Week year * <td><a href="#year">Year</a> * <td><code>2009</code>; <code>09</code> - * <td>1+</td> + * <td>24+</td> * <tr style="background-color: rgb(238, 238, 255);"> * <td><code>M</code> * <td>Month in year (context sensitive) @@ -242,7 +242,7 @@ import static java.text.DateFormatSymbols.*; * <td>Time zone * <td><a href="#iso8601timezone">ISO 8601 time zone</a> * <td><code>-08</code>; <code>-0800</code>; <code>-08:00</code> - * <td>1+</td> + * <td>24+</td> * </table> * </blockquote> * Pattern letters are usually repeated, as their number determines the diff --git a/ojluni/src/main/java/java/util/Locale.java b/ojluni/src/main/java/java/util/Locale.java index 9073504f54a..9d9f3e415aa 100644 --- a/ojluni/src/main/java/java/util/Locale.java +++ b/ojluni/src/main/java/java/util/Locale.java @@ -516,7 +516,7 @@ import sun.util.locale.ParseStatus; * <td><a href="http://site.icu-project.org/download/56">ICU 56.1</a></td> * <td><a href="http://cldr.unicode.org/index/downloads/cldr-28">CLDR 28</a></td> * <td><a href="http://www.unicode.org/versions/Unicode8.0.0/">Unicode 8.0</a></td></tr> - * <tr><td>Android O</td> + * <tr><td>Android 8.0 (Oreo)</td> * <td><a href="http://site.icu-project.org/download/58">ICU 58.2</a></td> * <td><a href="http://cldr.unicode.org/index/downloads/cldr-30">CLDR 30.0.3</a></td> * <td><a href="http://www.unicode.org/versions/Unicode9.0.0/">Unicode 9.0</a></td></tr> |