aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--phpBB/includes/captcha/captcha_non_gd.php19
1 files changed, 7 insertions, 12 deletions
diff --git a/phpBB/includes/captcha/captcha_non_gd.php b/phpBB/includes/captcha/captcha_non_gd.php
index f875708f41..5e3b7abd1c 100644
--- a/phpBB/includes/captcha/captcha_non_gd.php
+++ b/phpBB/includes/captcha/captcha_non_gd.php
@@ -139,12 +139,9 @@ class captcha
*/
function png_chunk($length, $type, $data)
{
- $raw = $type;
- $raw .= $data;
- $crc = crc32($raw);
- $raw .= pack('C4', ($crc >> 24) & 255, ($crc >> 16) & 255, ($crc >> 8) & 255, $crc & 255);
+ $raw = $type . $data;
- return pack('C4', ($length >> 24) & 255, ($length >> 16) & 255, ($length >> 8) & 255, $length & 255) . $raw;
+ return pack('N', $length) . $raw . pack('N', crc32($raw));
}
/**
@@ -159,8 +156,7 @@ class captcha
$image = pack('C8', 137, 80, 78, 71, 13, 10, 26, 10);
// IHDR
- $raw = pack('C4', ($width >> 24) & 255, ($width >> 16) & 255, ($width >> 8) & 255, $width & 255);
- $raw .= pack('C4', ($height >> 24) & 255, ($height >> 16) & 255, ($height >> 8) & 255, $height & 255);
+ $raw = pack('N2', $width, $height);
$raw .= pack('C5', 8, 0, 0, 0, 0);
$image .= $this->png_chunk(13, 'IHDR', $raw);
@@ -180,11 +176,11 @@ class captcha
if (@extension_loaded('hash'))
{
- $adler_hash = hash('adler32', $raw_image, true);
+ $adler_hash = strrev(hash('adler32', $raw_image, true));
}
else if (@extension_loaded('mhash'))
{
- $adler_hash = mhash(MHASH_ADLER32, $raw_image);
+ $adler_hash = strrev(mhash(MHASH_ADLER32, $raw_image));
}
else
{
@@ -212,12 +208,11 @@ class captcha
$s1 %= 65521;
$s2 %= 65521;
}
- $adler = ($s2 << 16) | $s1;
- $adler_hash = pack('C4', $adler & 255, ($adler >> 8) & 255, ($adler >> 16) & 255, ($adler >> 24) & 255);
+ $adler_hash = pack('N', ($s2 << 16) | $s1);
}
// This is the same thing as gzcompress($raw_image, 0) but does not need zlib
- $raw_image = pack('C7', 0x78, 0x01, 0x01, $length, ($length >> 8) & 255, ~$length & 255, ~($length >> 8)) . $raw_image . strrev($adler_hash);
+ $raw_image = pack('C3v2', 0x78, 0x01, 0x01, $length, ~$length) . $raw_image . $adler_hash;
// The Zlib header + Adler hash make us add on 11
$length += 11;