From 146e0c45c0e39b83611399805b1f7f1489a53b97 Mon Sep 17 00:00:00 2001 From: fidian Date: Fri, 2 Feb 2001 17:51:19 +0000 Subject: [PATCH] * Changed some regexps into string matches and the like * Fixed more regexp quoting problems * Cleaned up some code * Added support for the seven new top-level domains (.aero, .biz, .coop, .info, .museum, .name, .pro) to url_parser.php git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@1043 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- functions/abook_database.php | 4 ++-- functions/abook_ldap_server.php | 2 +- functions/abook_local_file.php | 7 ++++--- functions/imap_mailbox.php | 36 ++++++++++++++++----------------- functions/imap_messages.php | 15 ++++++-------- functions/imap_search.php | 2 +- functions/mime.php | 8 ++++---- functions/smtp.php | 4 ++-- functions/strings.php | 4 ++-- functions/url_parser.php | 5 +++-- 10 files changed, 43 insertions(+), 44 deletions(-) diff --git a/functions/abook_database.php b/functions/abook_database.php index bc9fede2..a9dcc055 100644 --- a/functions/abook_database.php +++ b/functions/abook_database.php @@ -108,8 +108,8 @@ if(is_array($expr)) return; // Make regexp from glob'ed expression - $expr = ereg_replace('\?', '_', $expr); - $expr = ereg_replace('\*'. '%', $expr); + $expr = ereg_replace('\\?', '_', $expr); + $expr = ereg_replace('\\*'. '%', $expr); $expr = $this->dbh->quoteString($expr); $expr = "%$expr%"; diff --git a/functions/abook_ldap_server.php b/functions/abook_ldap_server.php index d95b1ab3..8ed8e20a 100644 --- a/functions/abook_ldap_server.php +++ b/functions/abook_ldap_server.php @@ -131,7 +131,7 @@ // Encode the expression $expr = $this->charset_encode($expr); - if(!ereg('\\*', $expr)) + if(strstr($expr, "*") === false) $expr = "*$expr*"; $expression = "cn=$expr"; diff --git a/functions/abook_local_file.php b/functions/abook_local_file.php index 8bc02405..7699c74e 100644 --- a/functions/abook_local_file.php +++ b/functions/abook_local_file.php @@ -149,9 +149,10 @@ // To be replaced by advanded search expression parsing if(is_array($expr)) return; - // Make regexp from glob'ed expression - $expr = ereg_replace('\?', '.', $expr); - $expr = ereg_replace('\*', '.*', $expr); + // Make regexp from glob'ed expression + // May want to quote other special characters like (, ), -, [, ], etc. + $expr = ereg_replace('\\?', '.', $expr); + $expr = ereg_replace('\\*', '.*', $expr); $res = array(); if(!$this->open()) diff --git a/functions/imap_mailbox.php b/functions/imap_mailbox.php index 6145b040..0ac9ca99 100755 --- a/functions/imap_mailbox.php +++ b/functions/imap_mailbox.php @@ -21,11 +21,11 @@ ** Checks whether or not the specified mailbox exists ******************************************************************************/ function sqimap_mailbox_exists ($imap_stream, $mailbox) { + if (! isset($mailbox)) + return false; fputs ($imap_stream, "a001 LIST \"\" \"$mailbox\"\r\n"); $mbx = sqimap_read_data($imap_stream, "a001", true, $response, $message); - if (isset($mailbox) && isset($mbx[0])) { - return !!(ereg ("$mailbox", $mbx[0])); // To force into true/false - } + return isset($mbx[0]); } /****************************************************************************** @@ -150,18 +150,18 @@ $boxes[$g]["formatted"] = $mailbox; } - $boxes[$g]["unformatted-dm"] = $mailbox; + $boxes[$g]['unformatted-dm'] = $mailbox; if (substr($mailbox, -1) == $dm) $mailbox = substr($mailbox, 0, strlen($mailbox) - 1); - $boxes[$g]["unformatted"] = $mailbox; - $boxes[$g]["unformatted-disp"] = ereg_replace("^" . $folder_prefix, "", $mailbox); - $boxes[$g]["id"] = $g; + $boxes[$g]['unformatted'] = $mailbox; + $boxes[$g]['unformatted-disp'] = ereg_replace('^' . $folder_prefix, '', $mailbox); + $boxes[$g]['id'] = $g; if (isset($line[$g])) ereg("\(([^)]*)\)",$line[$g],$regs); - $flags = trim(strtolower(str_replace("\\", "",$regs[1]))); + $flags = trim(strtolower(str_replace('\\', '',$regs[1]))); if ($flags) { - $boxes[$g]["flags"] = explode(" ", $flags); + $boxes[$g]['flags'] = explode(' ', $flags); } } @@ -278,14 +278,14 @@ // Then list special folders and their subfolders for ($i = 0 ; $i < count($boxes) ; $i++) { if ($move_to_trash && - eregi("^" . quotemeta($trash_folder) . "(" . - quotemeta($dm) . ".*)?$", $boxes[$i]["unformatted"])) { + eregi('^' . quotemeta($trash_folder) . '(' . + quotemeta($dm) . '.*)?$', $boxes[$i]["unformatted"])) { $boxesnew[] = $boxes[$i]; $used[$i] = true; } elseif ($move_to_sent && - eregi("^" . quotemeta($sent_folder) . "(" . - quotemeta($dm) . ".*)?$", $boxes[$i]["unformatted"])) { + eregi('^' . quotemeta($sent_folder) . '(' . + quotemeta($dm) . '.*)?$', $boxes[$i]["unformatted"])) { $boxesnew[] = $boxes[$i]; $used[$i] = true; } @@ -293,7 +293,7 @@ // Put INBOX.* folders ahead of the rest for ($i = 0; $i < count($boxes); $i++) { - if (eregi("^inbox\.", $boxes[$i]["unformatted"]) && + if (eregi('^inbox\\.', $boxes[$i]["unformatted"]) && (!isset($used[$i]) || $used[$i] == false)) { $boxesnew[] = $boxes[$i]; $used[$i] = true; @@ -346,8 +346,8 @@ // a parent. $boxesbyname[$mailbox] = $g; $parentfolder = readMailboxParent($mailbox, $dm); - if((eregi("^inbox".quotemeta($dm), $mailbox)) || - (ereg("^".$folder_prefix, $mailbox)) || + if((eregi('^inbox'.quotemeta($dm), $mailbox)) || + (ereg('^'.$folder_prefix, $mailbox)) || ( isset($boxesbyname[$parentfolder]) && (strlen($parentfolder) > 0) ) ) { if ($dm_count) $boxes[$g]["formatted"] = str_repeat("  ", $dm_count); @@ -362,7 +362,7 @@ if (substr($mailbox, -1) == $dm) $mailbox = substr($mailbox, 0, strlen($mailbox) - 1); $boxes[$g]["unformatted"] = $mailbox; - $boxes[$g]["unformatted-disp"] = ereg_replace("^" . $folder_prefix, "", $mailbox); + $boxes[$g]["unformatted-disp"] = ereg_replace('^' . $folder_prefix, '', $mailbox); $boxes[$g]["id"] = $g; /** Now lets get the flags for this mailbox **/ @@ -371,7 +371,7 @@ $flags = substr($read_mlbx[0], strpos($read_mlbx[0], "(")+1); $flags = substr($flags, 0, strpos($flags, ")")); - $flags = str_replace("\\", "", $flags); + $flags = str_replace('\\', '', $flags); $flags = trim(strtolower($flags)); if ($flags) { $boxes[$g]["flags"] = explode(" ", $flags); diff --git a/functions/imap_messages.php b/functions/imap_messages.php index e0215d6f..88729f0d 100755 --- a/functions/imap_messages.php +++ b/functions/imap_messages.php @@ -118,7 +118,7 @@ fputs ($imap_stream, "a003 FETCH $id RFC822.SIZE\r\n"); $read = sqimap_read_data($imap_stream, "a003", true, $r, $m); - preg_match("/([0-9]+)\)\s*$/i", $read[0], $regs); + eregi("([0-9]+)[^0-9]*$", $read[0], $regs); $size = $regs[1]; $header = new small_header; @@ -147,7 +147,7 @@ fputs ($imap_stream, "a001 FETCH $i:$i FLAGS\r\n"); $read = sqimap_read_data ($imap_stream, "a001", true, $response, $message); if (ereg("FLAGS(.*)", $read[0], $regs)) - return explode(" ", trim(ereg_replace('[\(\)\\]', '', $regs[1]))); + return explode(" ", trim(ereg_replace('[\\(\\)\\\\]', '', $regs[1]))); return Array('None'); } @@ -202,9 +202,6 @@ $hdr->type1 = "plain"; $hdr->charset = "us-ascii"; - preg_match("/\{([0-9]+)\}/", $read[$i], $regs); - preg_match("/[0-9]+/", $regs[0], $regs); - while ($i < count($read)) { if (substr($read[$i], 0, 17) == "MIME-Version: 1.0") { $hdr->mime = true; @@ -242,7 +239,7 @@ } /** Detect the boundary of a multipart message **/ - if (eregi("boundary=\"([^\"]+)\"", $line, $regs)) { + if (eregi('boundary="([^"]+)"', $line, $regs)) { $hdr->boundary = $regs[1]; } @@ -263,7 +260,7 @@ } - else if (strtolower(substr($read[$i], 0, 20)) == "content-disposition:") { + else if (strtolower(substr($read[$i], 0, 20)) == "content-disposition:") { /** Add better dontent-disposition support **/ $line = $read[$i]; @@ -306,8 +303,8 @@ else if (strtolower(substr($read[$i], 0, 5)) == "date:") { $d = substr($read[$i], 5); $d = trim($d); - $d = ereg_replace(" ", " ", $d); - $d = explode(" ", $d); + $d = strtr($d, array(' ', ' ')); + $d = explode(' ', $d); $hdr->date = getTimeStamp($d); $i++; } diff --git a/functions/imap_search.php b/functions/imap_search.php index 993a23aa..a86ddc7b 100644 --- a/functions/imap_search.php +++ b/functions/imap_search.php @@ -85,7 +85,7 @@ function sqimap_search($imapConnection,$search_where,$search_what,$mailbox,$colo $j = 0; while ($j < count($messagelist)) { - $date[$j] = ereg_replace(" ", " ", $date[$j]); + $date[$j] = ereg_replace(' ', ' ', $date[$j]); $tmpdate = explode(" ", trim($date[$j])); $messages[$j]["TIME_STAMP"] = getTimeStamp($tmpdate); diff --git a/functions/mime.php b/functions/mime.php index eb2330ec..2af69c78 100644 --- a/functions/mime.php +++ b/functions/mime.php @@ -377,11 +377,11 @@ fputs ($imap_stream, "a010 FETCH $id BODY[$ent_id]\r\n"); $data = sqimap_read_data ($imap_stream, 'a010', true, $response, $message); $topline = array_shift($data); - while (! ereg('\* [0-9]+ FETCH ', $topline) && data) + while (! ereg('\\* [0-9]+ FETCH ', $topline) && data) $topline = array_shift($data); $wholemessage = implode('', $data); - if (ereg('\{([^\}]*)\}', $topline, $regs)) { + if (ereg('\\{([^\\}]*)\\}', $topline, $regs)) { return substr($wholemessage, 0, $regs[1]); } else if (ereg('"([^"]*)"', $topline, $regs)) { @@ -651,7 +651,7 @@ // This functions decode strings that is encoded according to // RFC1522 (MIME Part Two: Message Header Extensions for Non-ASCII Text). function decodeHeader ($string) { - if (eregi('=\?([^?]+)\?(q|b)\?([^?]+)\?=', + if (eregi('=\\?([^?]+)\\?(q|b)\\?([^?]+)\\?=', $string, $res)) { if (ucfirst($res[2]) == "B") { $replace = base64_decode($res[3]); @@ -668,7 +668,7 @@ $replace = charset_decode ($res[1], $replace); $string = eregi_replace - ('=\?([^?]+)\?(q|b)\?([^?]+)\?=', + ('=\\?([^?]+)\\?(q|b)\\?([^?]+)\\?=', $replace, $string); // In case there should be more encoding in the string: recurse return (decodeHeader($string)); diff --git a/functions/smtp.php b/functions/smtp.php index 9ec78632..a6057f78 100644 --- a/functions/smtp.php +++ b/functions/smtp.php @@ -511,8 +511,8 @@ // In order to remove the problem of users not able to create // messages with "." on a blank line, RFC821 has made provision // in section 4.5.2 (Transparency). - $body = ereg_replace("\n\.", "\n\.\.", $body); - $body = ereg_replace("^\.", "\.\.", $body); + $body = ereg_replace("\n\\.", "\n..", $body); + $body = ereg_replace("^\\.", "..", $body); // this is to catch all plain \n instances and // replace them with \r\n. diff --git a/functions/strings.php b/functions/strings.php index e3791452..12b0b47b 100644 --- a/functions/strings.php +++ b/functions/strings.php @@ -62,7 +62,7 @@ // Specifically, ' comes up as 5 characters instead of 1. // This should not add newlines to the end of lines. function sqWordWrap(&$line, $wrap) { - preg_match('/^([\\s>]*)([^\\s>].*)?$/', $line, $regs); + ereg("^([\t >]*)([^\t >].*)?$", $line, $regs); $beginning_spaces = $regs[1]; if (isset($regs[2])) { $words = explode(' ', $regs[2]); @@ -112,7 +112,7 @@ $PreviousSpaces = ""; for ($i = 0; $i < count($lines); $i ++) { - preg_match('/^([\\s>]*)([^\\s>].*)?$/', $lines[$i], $regs); + ereg("^([\t >]*)([^\t >].*)?$", $lines[$i], $regs); $CurrentSpaces = $regs[1]; if (isset($regs[2])) $CurrentRest = $regs[2]; diff --git a/functions/url_parser.php b/functions/url_parser.php index f7ab7e56..032ab167 100644 --- a/functions/url_parser.php +++ b/functions/url_parser.php @@ -24,8 +24,9 @@ // $IPMatch = '\[?' . $IPMatch . '(\.' . $IPMatch . '){3}\]?'; // // Here's enough: - $IPMatch = '\[?[0-9]{1,3}(\.[0-9]{1,3}){3}\]?'; - $Host = '(' . $IPMatch . '|[0-9a-z]([-.]?[0-9a-z])*\.[a-wyz][a-z](g|l|m|pa|t|u|v)?)'; + $IPMatch = '\\[?[0-9]{1,3}(\\.[0-9]{1,3}){3}\\]?'; + $Host = '(' . $IPMatch . +'|[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|me|o|op|pa|ro|seum|t|u|v|z)?)'; $Expression = '[0-9a-z]([-_.]?[0-9a-z])*(%' . $Host . ')?@' . $Host; /* -- 2.25.1