From fa107ec80ea844a4fa809dedf6385f534c3274aa Mon Sep 17 00:00:00 2001 From: Alan Bateman Date: Wed, 11 May 2011 15:00:16 +0100 Subject: [PATCH] 7043788: (fs) PosixFileAttributes.owner() or group() throws NPE if owner/group not in passwd/group database Reviewed-by: chegar --- .../native/sun/nio/fs/UnixNativeDispatcher.c | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c b/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c index ba22f417556..f41409b051e 100644 --- a/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c +++ b/jdk/src/solaris/native/sun/nio/fs/UnixNativeDispatcher.c @@ -892,8 +892,9 @@ Java_sun_nio_fs_UnixNativeDispatcher_getpwuid(JNIEnv* env, jclass this, jint uid if (res != 0 || p == NULL || p->pw_name == NULL || *(p->pw_name) == '\0') { /* not found or error */ - if (errno != 0 && errno != ENOENT) - throwUnixException(env, errno); + if (errno == 0) + errno = ENOENT; + throwUnixException(env, errno); } else { jsize len = strlen(p->pw_name); result = (*env)->NewByteArray(env, len); @@ -941,14 +942,14 @@ Java_sun_nio_fs_UnixNativeDispatcher_getgrgid(JNIEnv* env, jclass this, jint gid retry = 0; if (res != 0 || g == NULL || g->gr_name == NULL || *(g->gr_name) == '\0') { /* not found or error */ - if (errno != 0 && errno != ENOENT) { - if (errno == ERANGE) { - /* insufficient buffer size so need larger buffer */ - buflen += ENT_BUF_SIZE; - retry = 1; - } else { - throwUnixException(env, errno); - } + if (errno == ERANGE) { + /* insufficient buffer size so need larger buffer */ + buflen += ENT_BUF_SIZE; + retry = 1; + } else { + if (errno == 0) + errno = ENOENT; + throwUnixException(env, errno); } } else { jsize len = strlen(g->gr_name);