equal
deleted
inserted
replaced
42 |
42 |
43 int i; |
43 int i; |
44 char pwd_buf[1024]; |
44 char pwd_buf[1024]; |
45 struct passwd *pwd; |
45 struct passwd *pwd; |
46 struct passwd resbuf; |
46 struct passwd resbuf; |
47 jsize numSuppGroups = getgroups(0, NULL); |
|
48 gid_t *groups = (gid_t *)calloc(numSuppGroups, sizeof(gid_t)); |
|
49 |
|
50 jfieldID userNameID; |
47 jfieldID userNameID; |
51 jfieldID userID; |
48 jfieldID userID; |
52 jfieldID groupID; |
49 jfieldID groupID; |
53 jfieldID supplementaryGroupID; |
50 jfieldID supplementaryGroupID; |
54 |
51 |
55 jstring jstr; |
52 jstring jstr; |
56 jlongArray jgroups; |
53 jlongArray jgroups; |
57 jlong *jgroupsAsArray; |
54 jlong *jgroupsAsArray; |
58 jclass cls = (*env)->GetObjectClass(env, obj); |
55 jsize numSuppGroups; |
|
56 gid_t *groups; |
|
57 jclass cls; |
|
58 |
|
59 numSuppGroups = getgroups(0, NULL); |
|
60 groups = (gid_t *)calloc(numSuppGroups, sizeof(gid_t)); |
|
61 if (groups == NULL) { |
|
62 jclass cls = (*env)->FindClass(env,"java/lang/OutOfMemoryError"); |
|
63 if(cls != 0) |
|
64 (*env)->ThrowNew(env, cls, NULL); |
|
65 return; |
|
66 } |
|
67 |
|
68 cls = (*env)->GetObjectClass(env, obj); |
59 |
69 |
60 memset(pwd_buf, 0, sizeof(pwd_buf)); |
70 memset(pwd_buf, 0, sizeof(pwd_buf)); |
61 |
71 |
62 if (getpwuid_r(getuid(), &resbuf, pwd_buf, sizeof(pwd_buf), &pwd) == 0 && |
72 if (getpwuid_r(getuid(), &resbuf, pwd_buf, sizeof(pwd_buf), &pwd) == 0 && |
63 pwd != NULL && |
73 pwd != NULL && |