HDFS-5195. Prevent passing null pointer to mlock and munlock. Contributed by Chris Nauroth.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/HDFS-4949@1523093 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
2f8297215f
commit
1a1f49fa4f
@ -363,6 +363,15 @@ Java_org_apache_hadoop_io_nativeio_NativeIO_00024POSIX_sync_1file_1range(
|
||||
#endif
|
||||
}
|
||||
|
||||
#define CHECK_DIRECT_BUFFER_ADDRESS(buf) \
|
||||
{ \
|
||||
if (!buf) { \
|
||||
THROW(env, "java/lang/UnsupportedOperationException", \
|
||||
"JNI access to direct buffers not available"); \
|
||||
return; \
|
||||
} \
|
||||
}
|
||||
|
||||
/**
|
||||
* public static native void mlock_native(
|
||||
* ByteBuffer buffer, long offset);
|
||||
@ -379,6 +388,7 @@ Java_org_apache_hadoop_io_nativeio_NativeIO_00024POSIX_mlock_1native(
|
||||
PASS_EXCEPTIONS(env);
|
||||
|
||||
if (mlock(buf, len)) {
|
||||
CHECK_DIRECT_BUFFER_ADDRESS(buf);
|
||||
throw_ioe(env, errno);
|
||||
}
|
||||
}
|
||||
@ -399,6 +409,7 @@ Java_org_apache_hadoop_io_nativeio_NativeIO_00024POSIX_munlock_1native(
|
||||
PASS_EXCEPTIONS(env);
|
||||
|
||||
if (munlock(buf, len)) {
|
||||
CHECK_DIRECT_BUFFER_ADDRESS(buf);
|
||||
throw_ioe(env, errno);
|
||||
}
|
||||
}
|
||||
|
@ -545,9 +545,12 @@ public void testMlock() throws Exception {
|
||||
bufSum += buf[i];
|
||||
}
|
||||
FileOutputStream fos = new FileOutputStream(TEST_FILE);
|
||||
fos.write(buf);
|
||||
fos.getChannel().force(true);
|
||||
fos.close();
|
||||
try {
|
||||
fos.write(buf);
|
||||
fos.getChannel().force(true);
|
||||
} finally {
|
||||
fos.close();
|
||||
}
|
||||
|
||||
FileInputStream fis = null;
|
||||
FileChannel channel = null;
|
||||
|
@ -42,3 +42,5 @@ HDFS-4949 (Unreleased)
|
||||
|
||||
HDFS-5198. NameNodeRpcServer must not send back DNA_FINALIZE in reply to a
|
||||
cache report. (Contributed by Colin Patrick McCabe)
|
||||
|
||||
HDFS-5195. Prevent passing null pointer to mlock and munlock. (cnauroth)
|
||||
|
Loading…
Reference in New Issue
Block a user