alecpl
2009-02-06 5801afdf3ecc30b3eaaa19afa9d50ea42849271b
- Fix some base64 encoded attachments handling (#1485725)


2 files modified
23 ■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
program/lib/imap.inc 22 ●●●● patch | view | raw | blame | history
CHANGELOG
@@ -5,6 +5,7 @@
----------
- Fix pressing select all/unread multiple times (#1485723)
- Fix selecting all unread does not honor new messages (#1485724)
- Fix some base64 encoded attachments handling (#1485725)
2009/02/05 (alec)
----------
program/lib/imap.inc
@@ -2508,7 +2508,8 @@
                $len      = $to - $from;
                    $sizeStr  = substr($line, $from, $len);
                $bytes    = (int)$sizeStr;
            $prev      = '';
                while ($bytes > 0) {
                            $line      = iil_ReadLine($fp, 1024);
                        $len       = strlen($line);
@@ -2518,14 +2519,27 @@
                        }
                        $bytes -= strlen($line);
                $line = rtrim($line, "\t\r\n\0\x0B");
                        if ($mode == 1) {
                    if ($file)
                        fwrite($file, rtrim($line, "\t\r\n\0\x0B") . "\n");
                        fwrite($file, $line . "\n");
                                else
                        $result .= rtrim($line, "\t\r\n\0\x0B") . "\n";
                        $result .= $line . "\n";
                        } else if ($mode == 2) {
                                echo rtrim($line, "\t\r\n\0\x0B") . "\n";
                                echo $line . "\n";
                        } else if ($mode == 3) {
                    // create chunks with proper length for base64 decoding
                    $line = $prev.$line;
                    $length = strlen($line);
                    if ($length % 4) {
                        $length = floor($length / 4) * 4;
                        $prev = substr($line, $length);
                        $line = substr($line, 0, $length);
                    }
                    else
                        $prev = '';
                    if ($file)
                        fwrite($file, base64_decode($line));
                            else