aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2017-11-29 00:08:19 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2017-11-29 00:08:19 +0000
commitca2d6448022d2d281cc96986ca4dc526b2795eaf (patch)
treea36c61b262b448117764ddc630a29e4d8982fe66
parente3cd53671e05d6e861817c21fbc162f8c7fc17be (diff)
parent6b815ed6cde82df78ed12a60e4b9acfcc3fe9412 (diff)
downloadlibcore-android-8.1.0_r18.tar.gz
Change-Id: I59105ef5437aa03ec074eca66fe8c67d5a0c974c
-rw-r--r--luni/src/main/native/NetworkUtilities.cpp12
-rw-r--r--luni/src/main/native/libcore_io_Linux.cpp70
-rw-r--r--ojluni/src/main/java/java/lang/SecurityManager.java6
-rw-r--r--ojluni/src/main/java/java/text/SimpleDateFormat.java4
-rw-r--r--ojluni/src/main/java/java/util/Locale.java2
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>