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/01 19:12:33 UTC
svn commit: r810128 -
/commons/sandbox/runtime/trunk/src/main/native/os/unix/temps.c
Author: mturk
Date: Tue Sep 1 17:12:33 2009
New Revision: 810128
URL: http://svn.apache.org/viewvc?rev=810128&view=rev
Log:
Guard against temp path overflows
Modified:
commons/sandbox/runtime/trunk/src/main/native/os/unix/temps.c
Modified: commons/sandbox/runtime/trunk/src/main/native/os/unix/temps.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/os/unix/temps.c?rev=810128&r1=810127&r2=810128&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/os/unix/temps.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/os/unix/temps.c Tue Sep 1 17:12:33 2009
@@ -71,13 +71,19 @@
if (tmpath) {
if (strlcpy(name, tmpath, TMP_PATH_MAX) >= TMP_PATH_MAX) {
- ACR_THROW_IO_IF_ERR(ACR_ENODIR);
+ ACR_THROW_IO_IF_ERR(ACR_E2BIG);
return -1;
}
strlcat(name, "/", PATH_MAX);
}
strlcat(name, prefix, PATH_MAX);
- strlcat(name, "XXXXXX", PATH_MAX);
+ if (strlcat(name, "XXXXXX", PATH_MAX) >= PATH_MAX) {
+ /* Truncation occurred. We dont have enough space
+ * to create temp file template
+ */
+ ACR_THROW_IO_IF_ERR(ACR_E2BIG);
+ return -1;
+ }
fd = mkstemp(name);
if (fd < 0) {
@@ -123,12 +129,12 @@
for (;;) {
if (tmpath) {
if (strlcpy(name, tmpath, TMP_PATH_MAX) >= TMP_PATH_MAX) {
- ACR_THROW_IO_IF_ERR(ACR_ENODIR);
+ ACR_THROW_IO_IF_ERR(ACR_E2BIG);
return NULL;
}
- strlcat(name, "/", PATH_MAX);
+ strlcat(name, "/", PATH_MAX);
}
- strlcat(name, prefix, PATH_MAX);
+ strlcat(name, prefix, PATH_MAX);
if (strlcat(name, "XXXXXX", PATH_MAX) >= PATH_MAX) {
/* Truncation occurred. We dont have enough space
* to create temp file template