Loading core/java/android/os/Parcel.java +0 −14 Original line number Diff line number Diff line Loading @@ -39,7 +39,6 @@ import libcore.util.SneakyThrow; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.FileDescriptor; import java.io.FileNotFoundException; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; Loading Loading @@ -2100,19 +2099,6 @@ public final class Parcel { } } /** @deprecated use {@link android.system.Os#open(String, int, int)} */ @Deprecated static native FileDescriptor openFileDescriptor(String file, int mode) throws FileNotFoundException; /** @deprecated use {@link android.system.Os#dup(FileDescriptor)} */ @Deprecated static native FileDescriptor dupFileDescriptor(FileDescriptor orig) throws IOException; /** @deprecated use {@link android.system.Os#close(FileDescriptor)} */ @Deprecated static native void closeFileDescriptor(FileDescriptor desc) throws IOException; /** * Read a byte value from the parcel at the current dataPosition(). */ Loading core/java/android/os/ParcelFileDescriptor.java +7 −2 Original line number Diff line number Diff line Loading @@ -188,7 +188,13 @@ public class ParcelFileDescriptor implements Parcelable, Closeable { } mWrapped = null; mFd = fd; IoUtils.setFdOwner(mFd, this); mCommFd = commChannel; if (mCommFd != null) { IoUtils.setFdOwner(mCommFd, this); } mGuard.open("close"); } Loading Loading @@ -682,8 +688,7 @@ public class ParcelFileDescriptor implements Parcelable, Closeable { if (mClosed) { throw new IllegalStateException("Already closed"); } final int fd = getFd(); mFd.setInt$(-1); int fd = IoUtils.acquireRawFd(mFd); writeCommStatusAndClose(Status.DETACHED, null); mClosed = true; mGuard.close(); Loading core/jni/android_os_Parcel.cpp +0 −88 Original line number Diff line number Diff line Loading @@ -470,90 +470,6 @@ static jobject android_os_Parcel_readFileDescriptor(JNIEnv* env, jclass clazz, j return NULL; } static jobject android_os_Parcel_openFileDescriptor(JNIEnv* env, jclass clazz, jstring name, jint mode) { if (name == NULL) { jniThrowNullPointerException(env, NULL); return NULL; } ScopedUtfChars name8(env, name); if (name8.c_str() == NULL) { return NULL; } int flags=0; switch (mode&0x30000000) { case 0: case 0x10000000: flags = O_RDONLY; break; case 0x20000000: flags = O_WRONLY; break; case 0x30000000: flags = O_RDWR; break; } if (mode&0x08000000) flags |= O_CREAT; if (mode&0x04000000) flags |= O_TRUNC; if (mode&0x02000000) flags |= O_APPEND; int realMode = S_IRWXU|S_IRWXG; if (mode&0x00000001) realMode |= S_IROTH; if (mode&0x00000002) realMode |= S_IWOTH; int fd = open(name8.c_str(), flags, realMode); if (fd < 0) { jniThrowException(env, "java/io/FileNotFoundException", strerror(errno)); return NULL; } jobject object = jniCreateFileDescriptor(env, fd); if (object == NULL) { close(fd); } return object; } static jobject android_os_Parcel_dupFileDescriptor(JNIEnv* env, jclass clazz, jobject orig) { if (orig == NULL) { jniThrowNullPointerException(env, NULL); return NULL; } int origfd = jniGetFDFromFileDescriptor(env, orig); if (origfd < 0) { jniThrowException(env, "java/lang/IllegalArgumentException", "bad FileDescriptor"); return NULL; } int fd = dup(origfd); if (fd < 0) { jniThrowIOException(env, errno); return NULL; } jobject object = jniCreateFileDescriptor(env, fd); if (object == NULL) { close(fd); } return object; } static void android_os_Parcel_closeFileDescriptor(JNIEnv* env, jclass clazz, jobject object) { if (object == NULL) { jniThrowNullPointerException(env, NULL); return; } int fd = jniGetFDFromFileDescriptor(env, object); if (fd >= 0) { jniSetFileDescriptorOfFD(env, object, -1); //ALOGI("Closing ParcelFileDescriptor %d\n", fd); close(fd); } } static jlong android_os_Parcel_create(JNIEnv* env, jclass clazz) { Parcel* parcel = new Parcel(); Loading Loading @@ -796,10 +712,6 @@ static const JNINativeMethod gParcelMethods[] = { {"nativeReadStrongBinder", "(J)Landroid/os/IBinder;", (void*)android_os_Parcel_readStrongBinder}, {"nativeReadFileDescriptor", "(J)Ljava/io/FileDescriptor;", (void*)android_os_Parcel_readFileDescriptor}, {"openFileDescriptor", "(Ljava/lang/String;I)Ljava/io/FileDescriptor;", (void*)android_os_Parcel_openFileDescriptor}, {"dupFileDescriptor", "(Ljava/io/FileDescriptor;)Ljava/io/FileDescriptor;", (void*)android_os_Parcel_dupFileDescriptor}, {"closeFileDescriptor", "(Ljava/io/FileDescriptor;)V", (void*)android_os_Parcel_closeFileDescriptor}, {"nativeCreate", "()J", (void*)android_os_Parcel_create}, {"nativeFreeBuffer", "(J)J", (void*)android_os_Parcel_freeBuffer}, {"nativeDestroy", "(J)V", (void*)android_os_Parcel_destroy}, Loading core/jni/com_android_internal_os_Zygote.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include <sstream> #include <string> #include <android/fdsan.h> #include <fcntl.h> #include <grp.h> #include <inttypes.h> Loading Loading @@ -793,6 +794,8 @@ static pid_t ForkCommon(JNIEnv* env, jstring java_se_name, bool is_system_server fail_fn(error_msg); } android_fdsan_error_level fdsan_error_level = android_fdsan_get_error_level(); pid_t pid = fork(); if (pid == 0) { Loading @@ -809,6 +812,9 @@ static pid_t ForkCommon(JNIEnv* env, jstring java_se_name, bool is_system_server if (!gOpenFdTable->ReopenOrDetach(&error_msg)) { fail_fn(error_msg); } // Turn fdsan back on. android_fdsan_set_error_level(fdsan_error_level); } // We blocked SIGCHLD prior to a fork, we unblock it here. Loading Loading
core/java/android/os/Parcel.java +0 −14 Original line number Diff line number Diff line Loading @@ -39,7 +39,6 @@ import libcore.util.SneakyThrow; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.FileDescriptor; import java.io.FileNotFoundException; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; Loading Loading @@ -2100,19 +2099,6 @@ public final class Parcel { } } /** @deprecated use {@link android.system.Os#open(String, int, int)} */ @Deprecated static native FileDescriptor openFileDescriptor(String file, int mode) throws FileNotFoundException; /** @deprecated use {@link android.system.Os#dup(FileDescriptor)} */ @Deprecated static native FileDescriptor dupFileDescriptor(FileDescriptor orig) throws IOException; /** @deprecated use {@link android.system.Os#close(FileDescriptor)} */ @Deprecated static native void closeFileDescriptor(FileDescriptor desc) throws IOException; /** * Read a byte value from the parcel at the current dataPosition(). */ Loading
core/java/android/os/ParcelFileDescriptor.java +7 −2 Original line number Diff line number Diff line Loading @@ -188,7 +188,13 @@ public class ParcelFileDescriptor implements Parcelable, Closeable { } mWrapped = null; mFd = fd; IoUtils.setFdOwner(mFd, this); mCommFd = commChannel; if (mCommFd != null) { IoUtils.setFdOwner(mCommFd, this); } mGuard.open("close"); } Loading Loading @@ -682,8 +688,7 @@ public class ParcelFileDescriptor implements Parcelable, Closeable { if (mClosed) { throw new IllegalStateException("Already closed"); } final int fd = getFd(); mFd.setInt$(-1); int fd = IoUtils.acquireRawFd(mFd); writeCommStatusAndClose(Status.DETACHED, null); mClosed = true; mGuard.close(); Loading
core/jni/android_os_Parcel.cpp +0 −88 Original line number Diff line number Diff line Loading @@ -470,90 +470,6 @@ static jobject android_os_Parcel_readFileDescriptor(JNIEnv* env, jclass clazz, j return NULL; } static jobject android_os_Parcel_openFileDescriptor(JNIEnv* env, jclass clazz, jstring name, jint mode) { if (name == NULL) { jniThrowNullPointerException(env, NULL); return NULL; } ScopedUtfChars name8(env, name); if (name8.c_str() == NULL) { return NULL; } int flags=0; switch (mode&0x30000000) { case 0: case 0x10000000: flags = O_RDONLY; break; case 0x20000000: flags = O_WRONLY; break; case 0x30000000: flags = O_RDWR; break; } if (mode&0x08000000) flags |= O_CREAT; if (mode&0x04000000) flags |= O_TRUNC; if (mode&0x02000000) flags |= O_APPEND; int realMode = S_IRWXU|S_IRWXG; if (mode&0x00000001) realMode |= S_IROTH; if (mode&0x00000002) realMode |= S_IWOTH; int fd = open(name8.c_str(), flags, realMode); if (fd < 0) { jniThrowException(env, "java/io/FileNotFoundException", strerror(errno)); return NULL; } jobject object = jniCreateFileDescriptor(env, fd); if (object == NULL) { close(fd); } return object; } static jobject android_os_Parcel_dupFileDescriptor(JNIEnv* env, jclass clazz, jobject orig) { if (orig == NULL) { jniThrowNullPointerException(env, NULL); return NULL; } int origfd = jniGetFDFromFileDescriptor(env, orig); if (origfd < 0) { jniThrowException(env, "java/lang/IllegalArgumentException", "bad FileDescriptor"); return NULL; } int fd = dup(origfd); if (fd < 0) { jniThrowIOException(env, errno); return NULL; } jobject object = jniCreateFileDescriptor(env, fd); if (object == NULL) { close(fd); } return object; } static void android_os_Parcel_closeFileDescriptor(JNIEnv* env, jclass clazz, jobject object) { if (object == NULL) { jniThrowNullPointerException(env, NULL); return; } int fd = jniGetFDFromFileDescriptor(env, object); if (fd >= 0) { jniSetFileDescriptorOfFD(env, object, -1); //ALOGI("Closing ParcelFileDescriptor %d\n", fd); close(fd); } } static jlong android_os_Parcel_create(JNIEnv* env, jclass clazz) { Parcel* parcel = new Parcel(); Loading Loading @@ -796,10 +712,6 @@ static const JNINativeMethod gParcelMethods[] = { {"nativeReadStrongBinder", "(J)Landroid/os/IBinder;", (void*)android_os_Parcel_readStrongBinder}, {"nativeReadFileDescriptor", "(J)Ljava/io/FileDescriptor;", (void*)android_os_Parcel_readFileDescriptor}, {"openFileDescriptor", "(Ljava/lang/String;I)Ljava/io/FileDescriptor;", (void*)android_os_Parcel_openFileDescriptor}, {"dupFileDescriptor", "(Ljava/io/FileDescriptor;)Ljava/io/FileDescriptor;", (void*)android_os_Parcel_dupFileDescriptor}, {"closeFileDescriptor", "(Ljava/io/FileDescriptor;)V", (void*)android_os_Parcel_closeFileDescriptor}, {"nativeCreate", "()J", (void*)android_os_Parcel_create}, {"nativeFreeBuffer", "(J)J", (void*)android_os_Parcel_freeBuffer}, {"nativeDestroy", "(J)V", (void*)android_os_Parcel_destroy}, Loading
core/jni/com_android_internal_os_Zygote.cpp +6 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ #include <sstream> #include <string> #include <android/fdsan.h> #include <fcntl.h> #include <grp.h> #include <inttypes.h> Loading Loading @@ -793,6 +794,8 @@ static pid_t ForkCommon(JNIEnv* env, jstring java_se_name, bool is_system_server fail_fn(error_msg); } android_fdsan_error_level fdsan_error_level = android_fdsan_get_error_level(); pid_t pid = fork(); if (pid == 0) { Loading @@ -809,6 +812,9 @@ static pid_t ForkCommon(JNIEnv* env, jstring java_se_name, bool is_system_server if (!gOpenFdTable->ReopenOrDetach(&error_msg)) { fail_fn(error_msg); } // Turn fdsan back on. android_fdsan_set_error_level(fdsan_error_level); } // We blocked SIGCHLD prior to a fork, we unblock it here. Loading