Author: mturk
Date: Thu Jul 30 06:36:02 2009
New Revision: 799183
URL: http://svn.apache.org/viewvc?rev=799183&view=rev
Log:
Extend params checking
Modified:
commons/sandbox/runtime/trunk/src/main/native/include/acr.h
commons/sandbox/runtime/trunk/src/main/native/shared/db.c
commons/sandbox/runtime/trunk/src/main/native/shared/memory.c
commons/sandbox/runtime/trunk/src/main/native/shared/nbb.c
commons/sandbox/runtime/trunk/src/main/native/shared/xdr.c
Modified: commons/sandbox/runtime/trunk/src/main/native/include/acr.h
URL:
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/include/acr.h?rev=799183&r1=799182&r2=799183&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/include/acr.h (original)
+++ commons/sandbox/runtime/trunk/src/main/native/include/acr.h Thu Jul 30
06:36:02 2009
@@ -247,6 +247,8 @@
#define ACR_SL_ALIGN(T, X) T X; long __align_##X
#endif
+#define ACR_SIZE_T_MAX ((acr_size_t)~0 - 8192)
+
/**
* ACR_DECLARE_EXPORT is defined when building the ANNEX dynamic library,
* so that all public symbols are exported.
Modified: commons/sandbox/runtime/trunk/src/main/native/shared/db.c
URL:
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/db.c?rev=799183&r1=799182&r2=799183&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/db.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/db.c Thu Jul 30
06:36:02 2009
@@ -114,7 +114,7 @@
void *mem;
acr_size_t siz = (acr_size_t)ACR_ALIGN_DEFAULT(len);
- if (len < 1) {
+ if (len < 1 || len > ACR_SIZE_T_MAX) {
ACR_SET_OS_ERROR(ACR_EISNULL);
return NULL;
}
Modified: commons/sandbox/runtime/trunk/src/main/native/shared/memory.c
URL:
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/memory.c?rev=799183&r1=799182&r2=799183&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/memory.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/memory.c Thu Jul 30
06:36:02 2009
@@ -113,8 +113,17 @@
size = 1024;
#endif
}
- else
+ else {
+ if (size > ACR_SIZE_T_MAX) {
+ /* We should fall lot before that.
+ */
+ if (!IS_INVALID_HANDLE(_E))
+ ACR_ThrowException(_E, file, line, ACR_EX_EINVAL,
+ ACR_EINVAL);
+ return NULL;
+ }
size = ACR_ALIGN_DEFAULT(sbhs + size);
+ }
if (!(base = ACR_Calloc(_E, file, line, size)))
return NULL;
sbh = (acr_sbh_t *)base;
@@ -173,6 +182,14 @@
ACR_EISNULL);
return NULL;
}
+ if (size > ACR_SIZE_T_MAX) {
+ /* We should fail lot before that.
+ */
+ if (!IS_INVALID_HANDLE(_E))
+ ACR_ThrowException(_E, file, line, ACR_EX_EINVAL,
+ ACR_EINVAL);
+ return NULL;
+ }
size = ACR_ALIGN_DEFAULT(size);
if ((sbh->size - sbh->ppos) >= size) {
@@ -262,7 +279,7 @@
acr_size_t ass = (acr_size_t)ACR_ALIGN_DEFAULT(siz);
UNREFERENCED_O;
- if (siz < 1L) {
+ if (siz < 1L || siz > ACR_SIZE_T_MAX) {
ACR_ThrowException(_E, THROW_NMARK, ACR_EX_EINVAL, 0);
return NULL;
}
@@ -284,7 +301,7 @@
acr_size_t ass = (acr_size_t)ACR_ALIGN_DEFAULT(siz);
UNREFERENCED_O;
- if (siz < 1L) {
+ if (siz < 1L || siz > ACR_SIZE_T_MAX) {
ACR_ThrowException(_E, THROW_NMARK, ACR_EX_EINVAL, 0);
return NULL;
}
@@ -303,19 +320,24 @@
jobject src,
jlong siz)
{
- acr_pointer_cleanup_fn_t *cb;
+ acr_pointer_cleanup_fn_t *cb;
void *np;
size_t ss = (size_t)siz;
void *op = ACR_PointerGet(_E, src, NULL);
UNREFERENCED_O;
- cb = ACR_PointerCallbackGet(_E, src);
- if (cb != memory_pointer_cleanup) {
- /* Trying to realloc on something we didn't alloc first.
- */
+
+ if (siz < 1L || siz > ACR_SIZE_T_MAX) {
+ ACR_ThrowException(_E, THROW_NMARK, ACR_EX_EINVAL, 0);
+ return;
+ }
+ cb = ACR_PointerCallbackGet(_E, src);
+ if (cb != memory_pointer_cleanup) {
+ /* Trying to realloc on something we didn't alloc first.
+ */
ACR_ThrowException(_E, THROW_NMARK, ACR_EX_ERUNTIME, ACR_EFAULT);
- return;
- }
+ return;
+ }
np = ACR_Realloc(_E, THROW_NMARK, op, ss);
if (!np) {
return;
Modified: commons/sandbox/runtime/trunk/src/main/native/shared/nbb.c
URL:
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/nbb.c?rev=799183&r1=799182&r2=799183&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/nbb.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/nbb.c Thu Jul 30
06:36:02 2009
@@ -38,7 +38,7 @@
UNREFERENCED_O;
- if (size < 1) {
+ if (size < 1L || size > ACR_SIZE_T_MAX) {
ACR_ThrowException(_E, THROW_FMARK, ACR_EX_EINVAL,
ACR_EINVALSIZ);
return NULL;
@@ -64,7 +64,7 @@
UNREFERENCED_O;
- if (size < 1) {
+ if (size < 1L || size > ACR_SIZE_T_MAX) {
ACR_ThrowException(_E, THROW_FMARK, ACR_EX_EINVAL,
ACR_EINVALSIZ);
return NULL;
Modified: commons/sandbox/runtime/trunk/src/main/native/shared/xdr.c
URL:
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/xdr.c?rev=799183&r1=799182&r2=799183&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/xdr.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/xdr.c Thu Jul 30
06:36:02 2009
@@ -44,6 +44,8 @@
{
size_t size = ACR_ALIGN_DEFAULT(sizeof(acr_xdr_t)) + len;
+ if (len > ACR_SIZE_T_MAX)
+ return ACR_EINVAL;
*xdr = (acr_xdr_t *)malloc(size);
if (*xdr == NULL)
return ACR_GET_OS_ERROR();
@@ -61,7 +63,7 @@
}
ACR_DECLARE(int) ACR_XdrInitEx(acr_xdr_t **xdr, acr_byte_t *buf, size_t len,
- int nbo)
+ int nbo)
{
*xdr = (acr_xdr_t *)buf;