Browse Source

ext/sodium: Use a correct max output size for base64 decoding

Also handle the case where the function is not available in test.

Backport from PECL libsodium-php 2.0.12
pull/3602/head
Frank Denis 8 years ago
parent
commit
15ba7df224
  1. 2
      ext/sodium/libsodium.c
  2. 7
      ext/sodium/tests/utils.phpt

2
ext/sodium/libsodium.c

@ -2780,7 +2780,7 @@ PHP_FUNCTION(sodium_base642bin)
"invalid base64 variant identifier", 0);
return;
}
bin_len = b64_len / 4U * 3U;
bin_len = b64_len / 4U * 3U + 1U;
bin = zend_string_alloc(bin_len, 0);
if (sodium_base642bin((unsigned char *) ZSTR_VAL(bin), bin_len,
b64, b64_len,

7
ext/sodium/tests/utils.phpt

@ -86,6 +86,12 @@ if (defined('SODIUM_BASE64_VARIANT_ORIGINAL')) {
} catch (Exception $e) {
var_dump('base64("O") case passed');
}
var_dump(sodium_base642bin('YWJjZA', SODIUM_BASE64_VARIANT_ORIGINAL_NO_PADDING));
} else {
var_dump('base64("O1R") case passed');
var_dump('base64("O1") case passed');
var_dump('base64("O") case passed');
var_dump('abcd');
}
?>
@ -107,3 +113,4 @@ bool(true)
string(25) "base64("O1R") case passed"
string(24) "base64("O1") case passed"
string(23) "base64("O") case passed"
string(4) "abcd"
Loading…
Cancel
Save