WordPress.org

Make WordPress Core

Ticket #9697: 9697.2.patch

File 9697.2.patch, 14.6 KB (added by hakre, 9 years ago)

missing delimiter added for pcre pattern

  • wp-includes/class-phpmailer.php

     
    22/*~ class.phpmailer.php
    33.---------------------------------------------------------------------------.
    44|  Software: PHPMailer - PHP email class                                    |
    5 |   Version: 2.0.2                                                          |
     5|   Version: 2.0.4                                                          |
    66|   Contact: via sourceforge.net support pages (also www.codeworxtech.com)  |
    77|      Info: http://phpmailer.sourceforge.net                               |
    88|   Support: http://sourceforge.net/projects/phpmailer/                     |
     
    2828 * PHPMailer - PHP email transport class
    2929 * @package PHPMailer
    3030 * @author Andy Prevost
    31  * @copyright 2004 - 2008 Andy Prevost
     31 * @copyright 2004 - 2009 Andy Prevost
    3232 */
    3333
    3434class PHPMailer {
     
    139139   * Holds PHPMailer version.
    140140   * @var string
    141141   */
    142   var $Version           = "2.0.2";
     142  var $Version           = "2.0.4";
    143143
    144144  /**
    145145   * Sets the email address that a reading confirmation will be sent.
     
    257257  var $language        = array();
    258258  var $error_count     = 0;
    259259  var $LE              = "\n";
     260  var $sign_cert_file  = "";
    260261  var $sign_key_file   = "";
    261262  var $sign_key_pass   = "";
    262263
     
    649650    } elseif (file_exists($lang_path.'phpmailer.lang-en.php')) {
    650651      include($lang_path.'phpmailer.lang-en.php');
    651652    } else {
    652       $this->SetError('Could not load language file');
    653       return false;
     653      $PHPMAILER_LANG = array();
     654      $PHPMAILER_LANG["provide_address"]      = 'You must provide at least one ' .
     655      $PHPMAILER_LANG["mailer_not_supported"] = ' mailer is not supported.';
     656      $PHPMAILER_LANG["execute"]              = 'Could not execute: ';
     657      $PHPMAILER_LANG["instantiate"]          = 'Could not instantiate mail function.';
     658      $PHPMAILER_LANG["authenticate"]         = 'SMTP Error: Could not authenticate.';
     659      $PHPMAILER_LANG["from_failed"]          = 'The following From address failed: ';
     660      $PHPMAILER_LANG["recipients_failed"]    = 'SMTP Error: The following ' .
     661      $PHPMAILER_LANG["data_not_accepted"]    = 'SMTP Error: Data not accepted.';
     662      $PHPMAILER_LANG["connect_host"]         = 'SMTP Error: Could not connect to SMTP host.';
     663      $PHPMAILER_LANG["file_access"]          = 'Could not access file: ';
     664      $PHPMAILER_LANG["file_open"]            = 'File Error: Could not open file: ';
     665      $PHPMAILER_LANG["encoding"]             = 'Unknown encoding: ';
     666      $PHPMAILER_LANG["signing"]              = 'Signing Error: ';
    654667    }
    655668    $this->language = $PHPMAILER_LANG;
    656669
     
    864877      } elseif (count($this->cc) == 0) {
    865878        $result .= $this->HeaderLine('To', 'undisclosed-recipients:;');
    866879      }
    867       if(count($this->cc) > 0) {
    868         $result .= $this->AddrAppend('Cc', $this->cc);
    869       }
    870880    }
    871881
    872882    $from = array();
     
    10071017      fclose($fp);
    10081018      $signed = tempnam("", "signed");
    10091019
    1010       if (@openssl_pkcs7_sign($file, $signed, "file://".$this->sign_key_file, array("file://".$this->sign_key_file, $this->sign_key_pass), null)) {
     1020      if (@openssl_pkcs7_sign($file, $signed, "file://".$this->sign_cert_file, array("file://".$this->sign_key_file, $this->sign_key_pass), null)) {
    10111021        $fp = fopen($signed, "r");
    10121022        $result = fread($fp, filesize($this->sign_key_file));
     1023        $result = '';
     1024        while(!feof($fp)){
     1025          $result = $result . fread($fp, 1024);
     1026        }
    10131027        fclose($fp);
    10141028      } else {
    10151029        $this->SetError($this->Lang("signing").openssl_error_string());
     
    11591173      $cid         = $this->attachment[$i][7];
    11601174
    11611175      $mime[] = sprintf("--%s%s", $this->boundary[1], $this->LE);
    1162       $mime[] = sprintf("Content-Type: %s; name=\"%s\"%s", $type, $name, $this->LE);
     1176      $mime[] = sprintf("Content-Type: %s; name=\"%s\"%s", $type, $this->EncodeHeader($this->SecureHeader($name)), $this->LE);
    11631177      $mime[] = sprintf("Content-Transfer-Encoding: %s%s", $encoding, $this->LE);
    11641178
    11651179      if($disposition == 'inline') {
    11661180        $mime[] = sprintf("Content-ID: <%s>%s", $cid, $this->LE);
    11671181      }
    11681182
    1169       $mime[] = sprintf("Content-Disposition: %s; filename=\"%s\"%s", $disposition, $name, $this->LE.$this->LE);
     1183      $mime[] = sprintf("Content-Disposition: %s; filename=\"%s\"%s", $disposition, $this->EncodeHeader($this->SecureHeader($name)), $this->LE.$this->LE);
    11701184
    11711185      /* Encode as string attachment */
    11721186      if($bString) {
     
    13991413      } // end of for
    14001414      $output .= $newline.$eol;
    14011415    } // end of while
    1402     return trim($output);
     1416    return $output;
    14031417  }
    14041418
    14051419  /**
    1406    * Callback for converting to "=XX".
    1407    * @access private
    1408    * @return string
    1409    */
    1410   function EncodeQ_callback ($matches) {
    1411     return "=".sprintf("%02X", ord($matches[1]));
    1412   }
    1413 
    1414   /**
    14151420   * Encode string to q encoding.
    14161421   * @access private
    14171422   * @return string
     
    14221427
    14231428    switch (strtolower($position)) {
    14241429      case 'phrase':
    1425         $encoded = preg_replace_callback("/([^A-Za-z0-9!*+\/ -])/",
    1426                                          "EncodeQ_callback", $encoded);
     1430        $encoded = preg_replace("/([^A-Za-z0-9!*+\/ -])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded);
    14271431        break;
    14281432      case 'comment':
    1429         $encoded = preg_replace_callback("/([\(\)\"])/",
    1430                                          "EncodeQ_callback", $encoded);
    1431         break;
     1433        $encoded = preg_replace("/([\(\)\"])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded);
    14321434      case 'text':
    14331435      default:
    14341436        /* Replace every high ascii, control =, ? and _ characters */
    1435         $encoded = preg_replace_callback('/([\000-\011\013\014\016-\037\075\077\137\177-\377])/',
    1436                                          "EncodeQ_callback", $encoded);
     1437        $encoded = preg_replace('/([\000-\011\013\014\016-\037\075\077\137\177-\377])/e',
     1438              "'='.sprintf('%02X', ord('\\1'))", $encoded);
    14371439        break;
    14381440    }
    14391441
     
    17221724          $ext = $fileParts[1];
    17231725          $mimeType = $this->_mime_types($ext);
    17241726          if ( strlen($basedir) > 1 && substr($basedir,-1) != '/') { $basedir .= '/'; }
    1725           if ( strlen($directory) > 1 && substr($basedir,-1) != '/') { $directory .= '/'; }
    1726           $this->AddEmbeddedImage($basedir.$directory.$filename, md5($filename), $filename, 'base64', $mimeType);
     1727          if ( strlen($directory) > 1 && substr($directory,-1) != '/') { $directory .= '/'; }
    17271728          if ( $this->AddEmbeddedImage($basedir.$directory.$filename, md5($filename), $filename, 'base64',$mimeType) ) {
    17281729            $message = preg_replace("/".$images[1][$i]."=\"".preg_quote($url, '/')."\"/Ui", $images[1][$i]."=\"".$cid."\"", $message);
    17291730          }
     
    17341735    $this->Body = $message;
    17351736    $textMsg = trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/s','',$message)));
    17361737    if ( !empty($textMsg) && empty($this->AltBody) ) {
    1737       $this->AltBody = $textMsg;
     1738      $this->AltBody = html_entity_decode($textMsg);
    17381739    }
    17391740    if ( empty($this->AltBody) ) {
    17401741      $this->AltBody = 'To view this email message, open the email in with HTML compatibility!' . "\n\n";
     
    17481749   */
    17491750  function _mime_types($ext = '') {
    17501751    $mimes = array(
    1751       'hqx'  =>  'application/mac-binhex40',
    1752       'cpt'   =>  'application/mac-compactpro',
    1753       'doc'   =>  'application/msword',
     1752      'ai'    =>  'application/postscript',
     1753      'aif'   =>  'audio/x-aiff',
     1754      'aifc'  =>  'audio/x-aiff',
     1755      'aiff'  =>  'audio/x-aiff',
     1756      'avi'   =>  'video/x-msvideo',
    17541757      'bin'   =>  'application/macbinary',
    1755       'dms'   =>  'application/octet-stream',
    1756       'lha'   =>  'application/octet-stream',
    1757       'lzh'   =>  'application/octet-stream',
    1758       'exe'   =>  'application/octet-stream',
     1758      'bmp'   =>  'image/bmp',
    17591759      'class' =>  'application/octet-stream',
    1760       'psd'   =>  'application/octet-stream',
    1761       'so'    =>  'application/octet-stream',
    1762       'sea'   =>  'application/octet-stream',
    1763       'dll'   =>  'application/octet-stream',
    1764       'oda'   =>  'application/oda',
    1765       'pdf'   =>  'application/pdf',
    1766       'ai'    =>  'application/postscript',
    1767       'eps'   =>  'application/postscript',
    1768       'ps'    =>  'application/postscript',
    1769       'smi'   =>  'application/smil',
    1770       'smil'  =>  'application/smil',
    1771       'mif'   =>  'application/vnd.mif',
    1772       'xls'   =>  'application/vnd.ms-excel',
    1773       'ppt'   =>  'application/vnd.ms-powerpoint',
    1774       'wbxml' =>  'application/vnd.wap.wbxml',
    1775       'wmlc'  =>  'application/vnd.wap.wmlc',
     1760      'cpt'   =>  'application/mac-compactpro',
     1761      'css'   =>  'text/css',
    17761762      'dcr'   =>  'application/x-director',
    17771763      'dir'   =>  'application/x-director',
     1764      'dll'   =>  'application/octet-stream',
     1765      'dms'   =>  'application/octet-stream',
     1766      'doc'   =>  'application/msword',
     1767      'dvi'   =>  'application/x-dvi',
    17781768      'dxr'   =>  'application/x-director',
    1779       'dvi'   =>  'application/x-dvi',
     1769      'eml'   =>  'message/rfc822',
     1770      'eps'   =>  'application/postscript',
     1771      'exe'   =>  'application/octet-stream',
     1772      'gif'   =>  'image/gif',
    17801773      'gtar'  =>  'application/x-gtar',
    1781       'php'   =>  'application/x-httpd-php',
    1782       'php4'  =>  'application/x-httpd-php',
    1783       'php3'  =>  'application/x-httpd-php',
    1784       'phtml' =>  'application/x-httpd-php',
    1785       'phps'  =>  'application/x-httpd-php-source',
     1774      'htm'   =>  'text/html',
     1775      'html'  =>  'text/html',
     1776      'jpe'   =>  'image/jpeg',
     1777      'jpeg'  =>  'image/jpeg',
     1778      'jpg'   =>  'image/jpeg',
     1779      'hqx'   =>  'application/mac-binhex40',
    17861780      'js'    =>  'application/x-javascript',
    1787       'swf'   =>  'application/x-shockwave-flash',
    1788       'sit'   =>  'application/x-stuffit',
    1789       'tar'   =>  'application/x-tar',
    1790       'tgz'   =>  'application/x-tar',
    1791       'xhtml' =>  'application/xhtml+xml',
    1792       'xht'   =>  'application/xhtml+xml',
    1793       'zip'   =>  'application/zip',
     1781      'lha'   =>  'application/octet-stream',
     1782      'log'   =>  'text/plain',
     1783      'lzh'   =>  'application/octet-stream',
    17941784      'mid'   =>  'audio/midi',
    17951785      'midi'  =>  'audio/midi',
    1796       'mpga'  =>  'audio/mpeg',
     1786      'mif'   =>  'application/vnd.mif',
     1787      'mov'   =>  'video/quicktime',
     1788      'movie' =>  'video/x-sgi-movie',
    17971789      'mp2'   =>  'audio/mpeg',
    17981790      'mp3'   =>  'audio/mpeg',
    1799       'aif'   =>  'audio/x-aiff',
    1800       'aiff'  =>  'audio/x-aiff',
    1801       'aifc'  =>  'audio/x-aiff',
     1791      'mpe'   =>  'video/mpeg',
     1792      'mpeg'  =>  'video/mpeg',
     1793      'mpg'   =>  'video/mpeg',
     1794      'mpga'  =>  'audio/mpeg',
     1795      'oda'   =>  'application/oda',
     1796      'pdf'   =>  'application/pdf',
     1797      'php'   =>  'application/x-httpd-php',
     1798      'php3'  =>  'application/x-httpd-php',
     1799      'php4'  =>  'application/x-httpd-php',
     1800      'phps'  =>  'application/x-httpd-php-source',
     1801      'phtml' =>  'application/x-httpd-php',
     1802      'png'   =>  'image/png',
     1803      'ppt'   =>  'application/vnd.ms-powerpoint',
     1804      'ps'    =>  'application/postscript',
     1805      'psd'   =>  'application/octet-stream',
     1806      'qt'    =>  'video/quicktime',
     1807      'ra'    =>  'audio/x-realaudio',
    18021808      'ram'   =>  'audio/x-pn-realaudio',
    18031809      'rm'    =>  'audio/x-pn-realaudio',
    18041810      'rpm'   =>  'audio/x-pn-realaudio-plugin',
    1805       'ra'    =>  'audio/x-realaudio',
     1811      'rtf'   =>  'text/rtf',
     1812      'rtx'   =>  'text/richtext',
    18061813      'rv'    =>  'video/vnd.rn-realvideo',
    1807       'wav'   =>  'audio/x-wav',
    1808       'bmp'   =>  'image/bmp',
    1809       'gif'   =>  'image/gif',
    1810       'jpeg'  =>  'image/jpeg',
    1811       'jpg'   =>  'image/jpeg',
    1812       'jpe'   =>  'image/jpeg',
    1813       'png'   =>  'image/png',
    1814       'tiff'  =>  'image/tiff',
    1815       'tif'   =>  'image/tiff',
    1816       'css'   =>  'text/css',
    1817       'html'  =>  'text/html',
    1818       'htm'   =>  'text/html',
     1814      'sea'   =>  'application/octet-stream',
    18191815      'shtml' =>  'text/html',
     1816      'sit'   =>  'application/x-stuffit',
     1817      'so'    =>  'application/octet-stream',
     1818      'smi'   =>  'application/smil',
     1819      'smil'  =>  'application/smil',
     1820      'swf'   =>  'application/x-shockwave-flash',
     1821      'tar'   =>  'application/x-tar',
     1822      'text'  =>  'text/plain',
    18201823      'txt'   =>  'text/plain',
    1821       'text'  =>  'text/plain',
    1822       'log'   =>  'text/plain',
    1823       'rtx'   =>  'text/richtext',
    1824       'rtf'   =>  'text/rtf',
     1824      'tgz'   =>  'application/x-tar',
     1825      'tif'   =>  'image/tiff',
     1826      'tiff'  =>  'image/tiff',
     1827      'wav'   =>  'audio/x-wav',
     1828      'wbxml' =>  'application/vnd.wap.wbxml',
     1829      'wmlc'  =>  'application/vnd.wap.wmlc',
     1830      'word'  =>  'application/msword',
     1831      'xht'   =>  'application/xhtml+xml',
     1832      'xhtml' =>  'application/xhtml+xml',
     1833      'xl'    =>  'application/excel',
     1834      'xls'   =>  'application/vnd.ms-excel',
    18251835      'xml'   =>  'text/xml',
    18261836      'xsl'   =>  'text/xml',
    1827       'mpeg'  =>  'video/mpeg',
    1828       'mpg'   =>  'video/mpeg',
    1829       'mpe'   =>  'video/mpeg',
    1830       'qt'    =>  'video/quicktime',
    1831       'mov'   =>  'video/quicktime',
    1832       'avi'   =>  'video/x-msvideo',
    1833       'movie' =>  'video/x-sgi-movie',
    1834       'doc'   =>  'application/msword',
    1835       'word'  =>  'application/msword',
    1836       'xl'    =>  'application/excel',
    1837       'eml'   =>  'message/rfc822'
     1837      'zip'   =>  'application/zip'
    18381838    );
    18391839    return ( ! isset($mimes[strtolower($ext)])) ? 'application/octet-stream' : $mimes[strtolower($ext)];
    18401840  }
     
    18981898   * @param string $key_filename Parameter File Name
    18991899   * @param string $key_pass Password for private key
    19001900   */
    1901   function Sign($key_filename, $key_pass) {
     1901  function Sign($cert_filename, $key_filename, $key_pass) {
     1902    $this->sign_cert_file = $cert_filename;
    19021903    $this->sign_key_file = $key_filename;
    19031904    $this->sign_key_pass = $key_pass;
    19041905  }
  • wp-includes/class-smtp.php

     
    22/*~ class.smtp.php
    33.---------------------------------------------------------------------------.
    44|  Software: PHPMailer - PHP email class                                    |
    5 |   Version: 2.0.2                                                          |
     5|   Version: 2.0.4                                                          |
    66|   Contact: via sourceforge.net support pages (also www.codeworxtech.com)  |
    77|      Info: http://phpmailer.sourceforge.net                               |
    88|   Support: http://sourceforge.net/projects/phpmailer/                     |