jdk/src/solaris/native/com/sun/security/auth/module/Unix.c
changeset 16488 816b9df68a9f
parent 14342 8435a30053c1
child 22648 7bcdb55f70ff
--- a/jdk/src/solaris/native/com/sun/security/auth/module/Unix.c	Tue Mar 19 06:01:14 2013 -0400
+++ b/jdk/src/solaris/native/com/sun/security/auth/module/Unix.c	Mon Mar 18 14:21:13 2013 -0400
@@ -44,9 +44,6 @@
     char pwd_buf[1024];
     struct passwd *pwd;
     struct passwd resbuf;
-    jsize numSuppGroups = getgroups(0, NULL);
-    gid_t *groups = (gid_t *)calloc(numSuppGroups, sizeof(gid_t));
-
     jfieldID userNameID;
     jfieldID userID;
     jfieldID groupID;
@@ -55,7 +52,20 @@
     jstring jstr;
     jlongArray jgroups;
     jlong *jgroupsAsArray;
-    jclass cls = (*env)->GetObjectClass(env, obj);
+    jsize numSuppGroups;
+    gid_t *groups;
+    jclass cls;
+
+    numSuppGroups = getgroups(0, NULL);
+    groups = (gid_t *)calloc(numSuppGroups, sizeof(gid_t));
+    if (groups == NULL) {
+        jclass cls = (*env)->FindClass(env,"java/lang/OutOfMemoryError");
+        if(cls != 0)
+            (*env)->ThrowNew(env, cls, NULL);
+        return;
+    }
+
+    cls = (*env)->GetObjectClass(env, obj);
 
     memset(pwd_buf, 0, sizeof(pwd_buf));