Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e15bd916 authored by Orion Hodson's avatar Orion Hodson
Browse files

Avoid potential fd leak from jniCreateFileDescriptor (1/2)

Fixes corner case leaks in android_os_{Parcel,SharedMemory}.cpp.

Bug: 155706035
Test: m
Change-Id: I91ec2c7c3f29e7232fc2baa2dce6fc3c14ce271b
parent f0edf03f
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -475,7 +475,11 @@ static jobject android_os_Parcel_readFileDescriptor(JNIEnv* env, jclass clazz, j
        if (fd < 0) return NULL;
        fd = fcntl(fd, F_DUPFD_CLOEXEC, 0);
        if (fd < 0) return NULL;
        return jniCreateFileDescriptor(env, fd);
        jobject jifd = jniCreateFileDescriptor(env, fd);
        if (jifd == NULL) {
            close(fd);
        }
        return jifd;
    }
    return NULL;
}
+5 −1
Original line number Diff line number Diff line
@@ -69,7 +69,11 @@ jobject SharedMemory_nCreate(JNIEnv* env, jobject, jstring jname, jint size) {
        return nullptr;
    }

    return jniCreateFileDescriptor(env, fd);
    jobject jifd = jniCreateFileDescriptor(env, fd);
    if (jifd == nullptr) {
        close(fd);
    }
    return jifd;
}

jint SharedMemory_nGetSize(JNIEnv* env, jobject, jobject fileDescriptor) {