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;

Reply via email to