From 29c54229cfbc104930e7743cecc212f53aed8a15 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Mon, 28 Feb 2011 12:33:26 -0500
Subject: [PATCH] - Fix parsing links with non-printable characters inside (#1487805)

---
 CHANGELOG                   |    1 +
 program/lib/html2text.php   |    6 ++++--
 program/steps/mail/func.inc |    3 +++
 3 files changed, 8 insertions(+), 2 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index 95c0558..a72d8d6 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Fix parsing links with non-printable characters inside (#1487805)
 - Force IE to send referers (#1487806)
 - Fixed de_CH Localization bugs (#1487773)
 - Better display of vcard import results (#1485457)
diff --git a/program/lib/html2text.php b/program/lib/html2text.php
index 3b98e8d..325a1c9 100644
--- a/program/lib/html2text.php
+++ b/program/lib/html2text.php
@@ -652,10 +652,12 @@
         case 'h':
             return $this->_strtoupper("\n\n". $matches[2] ."\n\n");
         case 'a':
-            return $this->_build_link_list($matches[3], $matches[4]);
+            // Remove spaces in URL (#1487805)
+            $url = str_replace(' ', '', $matches[3]);
+            return $this->_build_link_list($url, $matches[4]);
         }
     }
-    
+
     /**
      *  Strtoupper multibyte wrapper function
      *
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index 9fa1e01..0903176 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -1200,6 +1200,9 @@
   $attrib = parse_attrib_string($matches[2]);
   $end = '>';
 
+  // Remove non-printable characters in URL (#1487805)
+  $attrib['href'] = preg_replace('/[\x00-\x1F]/', '', $attrib['href']);
+
   if ($tag == 'link' && preg_match('/^https?:\/\//i', $attrib['href'])) {
     $tempurl = 'tmp-' . md5($attrib['href']) . '.css';
     $_SESSION['modcssurls'][$tempurl] = $attrib['href'];

--
Gitblit v1.9.1