HADOOP-12296. when setnetgrent returns 0 in linux, exception should be thrown. Contributed by Chang Li
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/b9d25c3e Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/b9d25c3e Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/b9d25c3e Branch: refs/heads/HDFS-7240 Commit: b9d25c3ee2d20166d6a786c5a16cc001e249f61c Parents: 0383a39 Author: Jason Lowe <jl...@apache.org> Authored: Wed Nov 4 16:34:01 2015 +0000 Committer: Jason Lowe <jl...@apache.org> Committed: Wed Nov 4 16:34:01 2015 +0000 ---------------------------------------------------------------------- hadoop-common-project/hadoop-common/CHANGES.txt | 3 +++ .../security/JniBasedUnixGroupsNetgroupMapping.c | 18 +++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/b9d25c3e/hadoop-common-project/hadoop-common/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/CHANGES.txt b/hadoop-common-project/hadoop-common/CHANGES.txt index 4114bbd..efb73f4 100644 --- a/hadoop-common-project/hadoop-common/CHANGES.txt +++ b/hadoop-common-project/hadoop-common/CHANGES.txt @@ -1416,6 +1416,9 @@ Release 2.7.3 - UNRELEASED BUG FIXES + HADOOP-12296. when setnetgrent returns 0 in linux, exception should be + thrown (Chang Li via jlowe) + Release 2.7.2 - UNRELEASED INCOMPATIBLE CHANGES http://git-wip-us.apache.org/repos/asf/hadoop/blob/b9d25c3e/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/security/JniBasedUnixGroupsNetgroupMapping.c ---------------------------------------------------------------------- diff --git a/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/security/JniBasedUnixGroupsNetgroupMapping.c b/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/security/JniBasedUnixGroupsNetgroupMapping.c index de73a8a..4ae1051 100644 --- a/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/security/JniBasedUnixGroupsNetgroupMapping.c +++ b/hadoop-common-project/hadoop-common/src/main/native/src/org/apache/hadoop/security/JniBasedUnixGroupsNetgroupMapping.c @@ -57,6 +57,7 @@ Java_org_apache_hadoop_security_JniBasedUnixGroupsNetgroupMapping_getUsersForNet int setnetgrentCalledFlag = 0; // if not NULL then THROW exception + char *errorType = NULL; char *errorMessage = NULL; cgroup = (*env)->GetStringUTFChars(env, jgroup, NULL); @@ -94,7 +95,14 @@ Java_org_apache_hadoop_security_JniBasedUnixGroupsNetgroupMapping_getUsersForNet } } } - +#if defined(__linux__) + else { + errorType = "java/io/IOException"; + errorMessage = + "no netgroup of this name is known or some other error occurred"; + goto END; + } +#endif //-------------------------------------------------- // build return data (java array) @@ -103,7 +111,7 @@ Java_org_apache_hadoop_security_JniBasedUnixGroupsNetgroupMapping_getUsersForNet (*env)->FindClass(env, "java/lang/String"), NULL); if (jusers == NULL) { - errorMessage = "java/lang/OutOfMemoryError"; + errorType = "java/lang/OutOfMemoryError"; goto END; } @@ -114,7 +122,7 @@ Java_org_apache_hadoop_security_JniBasedUnixGroupsNetgroupMapping_getUsersForNet for(current = userListHead; current != NULL; current = current->next) { jstring juser = (*env)->NewStringUTF(env, current->string); if (juser == NULL) { - errorMessage = "java/lang/OutOfMemoryError"; + errorType = "java/lang/OutOfMemoryError"; goto END; } (*env)->SetObjectArrayElement(env, jusers, i++, juser); @@ -134,8 +142,8 @@ END: } // return results or THROW - if(errorMessage) { - THROW(env, errorMessage, NULL); + if(errorType) { + THROW(env, errorType, errorMessage); return NULL; } else { return jusers;