From 779cbe0066b10cbbe754184e4aed33d2502ff456 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Mon, 06 Apr 2009 07:33:13 -0400
Subject: [PATCH] - Fix 'temp_dir' does not support relative path under Windows (#1484529) - add file_exists check for uploaded attachments

---
 CHANGELOG                          |    1 +
 program/steps/mail/attachments.inc |    7 ++++++-
 2 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 3e1c3ec..e3742c2 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG RoundCube Webmail
 ===========================
 
+- Fix 'temp_dir' does not support relative path under Windows (#1484529)
 - Fix "Initialize Database" button missing from installer (#1485802)
 - Fix compose window doesn't fit 1024x768 window (#1485396)
 - Fix service not available error when pressing back from compose dialog (#1485552)
diff --git a/program/steps/mail/attachments.inc b/program/steps/mail/attachments.inc
index b0a2a7e..f6e29f9 100644
--- a/program/steps/mail/attachments.inc
+++ b/program/steps/mail/attachments.inc
@@ -63,6 +63,11 @@
 // use common temp dir for file uploads
 $temp_dir = unslashify($CONFIG['temp_dir']);
 
+// #1484529: we need absolute path on Windows for move_uploaded_file()
+if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
+  $temp_dir = realpath($temp_dir);
+}
+
 if (!is_array($_SESSION['compose']['attachments'])) {
   $_SESSION['compose']['attachments'] = array();
 }
@@ -73,7 +78,7 @@
 if (is_array($_FILES['_attachments']['tmp_name'])) {
   foreach ($_FILES['_attachments']['tmp_name'] as $i => $filepath) {
     $tmpfname = tempnam($temp_dir, 'rcmAttmnt');
-    if (move_uploaded_file($filepath, $tmpfname)) {
+    if (move_uploaded_file($filepath, $tmpfname) && file_exists($tmpfname)) {
       $id = count($_SESSION['compose']['attachments']);
       $_SESSION['compose']['attachments'][] = array(
         'name' => $_FILES['_attachments']['name'][$i],

--
Gitblit v1.9.1