You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mt...@apache.org on 2009/09/07 13:26:58 UTC
svn commit: r812087 - in /commons/sandbox/runtime/trunk/src/main/native:
include/acr_error.h os/unix/group.c os/unix/user.c os/win32/group.c
os/win32/user.c os/win32/wusec.c
Author: mturk
Date: Mon Sep 7 11:26:57 2009
New Revision: 812087
URL: http://svn.apache.org/viewvc?rev=812087&view=rev
Log:
Throw OS exception instead IO exception for users and groups
Modified:
commons/sandbox/runtime/trunk/src/main/native/include/acr_error.h
commons/sandbox/runtime/trunk/src/main/native/os/unix/group.c
commons/sandbox/runtime/trunk/src/main/native/os/unix/user.c
commons/sandbox/runtime/trunk/src/main/native/os/win32/group.c
commons/sandbox/runtime/trunk/src/main/native/os/win32/user.c
commons/sandbox/runtime/trunk/src/main/native/os/win32/wusec.c
Modified: commons/sandbox/runtime/trunk/src/main/native/include/acr_error.h
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/include/acr_error.h?rev=812087&r1=812086&r2=812087&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/include/acr_error.h (original)
+++ commons/sandbox/runtime/trunk/src/main/native/include/acr_error.h Mon Sep 7 11:26:57 2009
@@ -134,6 +134,25 @@
ACR_SET_OS_ERROR(_se); \
} else _E = _E
+#define ACR_THROW_OS_IF_ERR(S) \
+ if ((S) && IS_VALID_HANDLE(_E)) { \
+ if (ACR_STATUS_IS_EACCES((S))) \
+ ACR_ThrowException(_E, THROW_NMARK, ACR_EX_ESECURITY, (S)); \
+ else \
+ ACR_ThrowException(_E, THROW_NMARK, ACR_EX_OSERR, (S)); \
+ ACR_SET_OS_ERROR((S)); \
+ } else _E = _E
+
+#define ACR_THROW_OS_ERRNO() \
+ if (IS_VALID_HANDLE(_E)) { \
+ int _se = ACR_GET_OS_ERROR(); \
+ if (ACR_STATUS_IS_EACCES(_se)) \
+ ACR_ThrowException(_E, THROW_NMARK, ACR_EX_ESECURITY, _se); \
+ else \
+ ACR_ThrowException(_E, THROW_NMARK, ACR_EX_OSERR, _se); \
+ ACR_SET_OS_ERROR(_se); \
+ } else _E = _E
+
/*
* Convenience function to help throw any class
* @param env JNI Environment
Modified: commons/sandbox/runtime/trunk/src/main/native/os/unix/group.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/unix/group.c?rev=812087&r1=812086&r2=812087&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/unix/group.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/unix/group.c Mon Sep 7 11:26:57 2009
@@ -106,7 +106,7 @@
if (rc) {
rc = ACR_GET_OS_ERROR();
if (ACR_STATUS_IS_ENOENT(rc)) {
- ACR_THROW_IO_IF_ERR(rc);
+ ACR_THROW_OS_IF_ERR(rc);
}
return NULL;
}
@@ -148,7 +148,7 @@
if (rc) {
rc = ACR_GET_OS_ERROR();
if (ACR_STATUS_IS_ENOENT(rc)) {
- ACR_THROW_IO_IF_ERR(rc);
+ ACR_THROW_OS_IF_ERR(rc);
}
return NULL;
}
@@ -254,7 +254,7 @@
if (rc) {
rc = ACR_GET_OS_ERROR();
if (ACR_STATUS_IS_ENOENT(rc)) {
- ACR_THROW_IO_IF_ERR(rc);
+ ACR_THROW_OS_IF_ERR(rc);
}
return NULL;
}
Modified: commons/sandbox/runtime/trunk/src/main/native/os/unix/user.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/unix/user.c?rev=812087&r1=812086&r2=812087&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/unix/user.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/unix/user.c Mon Sep 7 11:26:57 2009
@@ -121,7 +121,7 @@
if (rc) {
rc = ACR_GET_OS_ERROR();
if (ACR_STATUS_IS_ENOENT(rc)) {
- ACR_THROW_IO_IF_ERR(rc);
+ ACR_THROW_OS_IF_ERR(rc);
}
return NULL;
}
@@ -168,7 +168,7 @@
if (rc) {
rc = ACR_GET_OS_ERROR();
if (ACR_STATUS_IS_ENOENT(rc)) {
- ACR_THROW_IO_IF_ERR(rc);
+ ACR_THROW_OS_IF_ERR(rc);
}
return NULL;
}
@@ -265,7 +265,7 @@
errno = 0;
ut = getutxent();
if (ut == NULL && n == 0) {
- ACR_THROW_IO_ERRNO();
+ ACR_THROW_OS_ERRNO();
return NULL;
}
if (ut == NULL)
Modified: commons/sandbox/runtime/trunk/src/main/native/os/win32/group.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/win32/group.c?rev=812087&r1=812086&r2=812087&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/win32/group.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/win32/group.c Mon Sep 7 11:26:57 2009
@@ -109,7 +109,6 @@
{
jobject grp;
jobject gid;
- int err;
DWORD rc;
SID_NAME_USE sidtype;
PSID sid;
@@ -118,12 +117,9 @@
sid = ACR_GetSidFromAccountName(name, &sidtype);
if (!sid) {
- err = ACR_GET_OS_ERROR();
- if (ACR_STATUS_IS_EACCES(err))
- ACR_ThrowException(_E, THROW_NMARK, ACR_EX_ESECURITY, 0);
- else if (ACR_TO_OS_ERROR(err) != ERROR_NONE_MAPPED)
- ACR_ThrowException(_E, THROW_NMARK, ACR_EX_OSERR, err);
-
+ if ((rc = GetLastError()) != ERROR_NONE_MAPPED) {
+ ACR_THROW_OS_IF_ERR((ACR_TO_OS_ERROR(rc));
+ }
return NULL;
}
if (sidtype != SidTypeGroup && sidtype != SidTypeAlias &&
@@ -183,13 +179,13 @@
if (!(sid = ACR_Malloc(_E, THROW_FMARK, len)))
return NULL;
if (!CopySid(len, sid, id)) {
- ACR_ThrowException(_E, THROW_NMARK, ACR_EX_OSERR, ACR_GET_OS_ERROR());
+ ACR_THROW_OS_ERRNO();
free(sid);
return NULL;
}
sidtype = ACR_GetAccountNameFromSid(name, MAX_PATH, sid);
if (sidtype == -1) {
- ACR_ThrowException(_E, THROW_NMARK, ACR_EX_OSERR, ACR_GET_OS_ERROR());
+ ACR_THROW_OS_ERRNO();
free(sid);
return NULL;
}
Modified: commons/sandbox/runtime/trunk/src/main/native/os/win32/user.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/win32/user.c?rev=812087&r1=812086&r2=812087&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/win32/user.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/win32/user.c Mon Sep 7 11:26:57 2009
@@ -122,7 +122,6 @@
{
jobject usr;
jobject uid;
- int err;
DWORD rc;
SID_NAME_USE sidtype;
PSID sid;
@@ -132,12 +131,9 @@
sid = ACR_GetSidFromAccountName(name, &sidtype);
if (!sid) {
- err = ACR_GET_OS_ERROR();
- if (ACR_STATUS_IS_EACCES(err))
- ACR_ThrowException(_E, THROW_NMARK, ACR_EX_ESECURITY, 0);
- else if (ACR_TO_OS_ERROR(err) != ERROR_NONE_MAPPED)
- ACR_ThrowException(_E, THROW_NMARK, ACR_EX_OSERR, err);
-
+ if ((rc = GetLastError()) != ERROR_NONE_MAPPED) {
+ ACR_THROW_OS_IF_ERR((ACR_TO_OS_ERROR(rc));
+ }
/* TODO: Throw exception */
return NULL;
}
@@ -182,8 +178,7 @@
}
else {
ACR_DescriptorCleanup(_E, uid);
- ACR_ThrowException(_E, THROW_NMARK, ACR_EX_OSERR,
- ACR_FROM_OS_ERROR(rc));
+ ACR_THROW_OS_IF_ERR(ACR_FROM_OS_ERROR(rc));
return NULL;
}
if (ConvertSidToStringSidW(sid, &ssid)) {
@@ -211,13 +206,13 @@
if (!(sid = ACR_Malloc(_E, THROW_FMARK, len)))
return NULL;
if (!CopySid(len, sid, id)) {
- ACR_ThrowException(_E, THROW_NMARK, ACR_EX_OSERR, ACR_GET_OS_ERROR());
+ ACR_THROW_OS_ERRNO();
free(sid);
return NULL;
}
sidtype = ACR_GetAccountNameFromSid(name, MAX_PATH, sid);
if (sidtype == -1) {
- ACR_ThrowException(_E, THROW_NMARK, ACR_EX_OSERR, ACR_GET_OS_ERROR());
+ ACR_THROW_OS_ERRNO();
free(sid);
return NULL;
}
@@ -261,8 +256,7 @@
}
else {
ACR_DescriptorCleanup(_E, uid);
- ACR_ThrowException(_E, THROW_NMARK, ACR_EX_OSERR,
- ACR_FROM_OS_ERROR(rc));
+ ACR_THROW_OS_IF_ERR(ACR_FROM_OS_ERROR(rc));
return NULL;
}
if (ConvertSidToStringSidW(sid, &ssid)) {
Modified: commons/sandbox/runtime/trunk/src/main/native/os/win32/wusec.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/win32/wusec.c?rev=812087&r1=812086&r2=812087&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/win32/wusec.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/win32/wusec.c Mon Sep 7 11:26:57 2009
@@ -98,11 +98,12 @@
GetTokenInformation(h, ic, NULL, sz, &sz);
if ((rc = GetLastError()) != ERROR_INSUFFICIENT_BUFFER) {
if(_E) {
- if (ACR_STATUS_IS_EACCES(ACR_FROM_OS_ERROR(rc)))
+ rc = ACR_FROM_OS_ERROR(rc);
+ if (ACR_STATUS_IS_EACCES(rc))
ACR_ThrowException(_E, THROW_NMARK, ACR_EX_ESECURITY, 0);
else if (rc != NERR_UserNotFound && rc != NERR_GroupNotFound)
- ACR_ThrowException(_E, THROW_NMARK, ACR_EX_OSERR,
- ACR_FROM_OS_ERROR(rc));
+ ACR_ThrowException(_E, THROW_NMARK, ACR_EX_OSERR, rc);
+ ACR_SET_OS_ERROR(rc);
}
return NULL;
}
@@ -110,11 +111,12 @@
return NULL;
}
if (!GetTokenInformation(h, ic, rv, sz, &sz)) {
+ rc = ACR_GET_OS_ERROR();
if(_E) {
- ACR_ThrowException(_E, THROW_NMARK, ACR_EX_OSERR,
- ACR_GET_OS_ERROR());
+ ACR_ThrowException(_E, THROW_NMARK, ACR_EX_OSERR, rc);
}
free(rv);
+ ACR_SET_OS_ERROR(rc);
rv = NULL;
}
return rv;