summaryrefslogtreecommitdiff
path: root/ext/sodium
diff options
context:
space:
mode:
Diffstat (limited to 'ext/sodium')
-rw-r--r--ext/sodium/libsodium.c46
1 files changed, 27 insertions, 19 deletions
diff --git a/ext/sodium/libsodium.c b/ext/sodium/libsodium.c
index 7aa9c05484..30508f7ff1 100644
--- a/ext/sodium/libsodium.c
+++ b/ext/sodium/libsodium.c
@@ -2075,8 +2075,9 @@ PHP_FUNCTION(sodium_crypto_pwhash_str_needs_rehash)
zend_long opslimit;
size_t hash_str_len;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "sll",
- &hash_str, &hash_str_len) == FAILURE) {
+ if (zend_parse_parameters_throw(ZEND_NUM_ARGS(), "sll",
+ &hash_str, &hash_str_len) == FAILURE) {
+ zend_throw_exception(sodium_exception_ce, "a PHP string is required", 0);
return;
}
if (crypto_pwhash_str_needs_rehash(hash_str, opslimit, memlimit) == 0) {
@@ -2723,8 +2724,9 @@ PHP_FUNCTION(sodium_bin2base64)
size_t bin_len;
size_t b64_len;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "sl",
- &bin, &bin_len, &variant) == FAILURE) {
+ if (zend_parse_parameters_throw(ZEND_NUM_ARGS(), "sl",
+ &bin, &bin_len, &variant) == FAILURE) {
+ sodium_remove_param_values_from_backtrace(EG(exception));
return;
}
if ((((unsigned int) variant) & ~ 0x6U) != 0x1U) {
@@ -2755,9 +2757,10 @@ PHP_FUNCTION(sodium_base642bin)
size_t b64_len;
size_t ignore_len = 0;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "sl|s",
- &b64, &b64_len, &variant,
- &ignore, &ignore_len) == FAILURE) {
+ if (zend_parse_parameters_throw(ZEND_NUM_ARGS(), "sl|s",
+ &b64, &b64_len, &variant,
+ &ignore, &ignore_len) == FAILURE) {
+ sodium_remove_param_values_from_backtrace(EG(exception));
return;
}
if ((((unsigned int) variant) & ~ 0x6U) != 0x1U) {
@@ -3505,8 +3508,9 @@ PHP_FUNCTION(sodium_crypto_secretstream_xchacha20poly1305_init_push)
unsigned char *key;
size_t key_len;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "s",
- &key, &key_len) == FAILURE) {
+ if (zend_parse_parameters_throw(ZEND_NUM_ARGS(), "s",
+ &key, &key_len) == FAILURE) {
+ sodium_remove_param_values_from_backtrace(EG(exception));
return;
}
if (key_len != crypto_secretstream_xchacha20poly1305_KEYBYTES) {
@@ -3539,9 +3543,10 @@ PHP_FUNCTION(sodium_crypto_secretstream_xchacha20poly1305_push)
size_t msg_len;
size_t state_len;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "zs|sl",
- &state_zv,
- &msg, &msg_len, &ad, &ad_len, &tag) == FAILURE) {
+ if (zend_parse_parameters_throw(ZEND_NUM_ARGS(), "zs|sl",
+ &state_zv,
+ &msg, &msg_len, &ad, &ad_len, &tag) == FAILURE) {
+ sodium_remove_param_values_from_backtrace(EG(exception));
return;
}
ZVAL_DEREF(state_zv);
@@ -3594,9 +3599,10 @@ PHP_FUNCTION(sodium_crypto_secretstream_xchacha20poly1305_init_pull)
size_t header_len;
size_t key_len;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "ss",
- &header, &header_len,
- &key, &key_len) == FAILURE) {
+ if (zend_parse_parameters_throw(ZEND_NUM_ARGS(), "ss",
+ &header, &header_len,
+ &key, &key_len) == FAILURE) {
+ sodium_remove_param_values_from_backtrace(EG(exception));
return;
}
if (header_len != crypto_secretstream_xchacha20poly1305_HEADERBYTES) {
@@ -3633,9 +3639,10 @@ PHP_FUNCTION(sodium_crypto_secretstream_xchacha20poly1305_pull)
size_t state_len;
unsigned char tag;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "zs|s",
- &state_zv,
- &c, &c_len, &ad, &ad_len) == FAILURE) {
+ if (zend_parse_parameters_throw(ZEND_NUM_ARGS(), "zs|s",
+ &state_zv,
+ &c, &c_len, &ad, &ad_len) == FAILURE) {
+ sodium_remove_param_values_from_backtrace(EG(exception));
return;
}
ZVAL_DEREF(state_zv);
@@ -3679,7 +3686,8 @@ PHP_FUNCTION(sodium_crypto_secretstream_xchacha20poly1305_rekey)
unsigned char *state;
size_t state_len;
- if (zend_parse_parameters(ZEND_NUM_ARGS(), "z", &state_zv) == FAILURE) {
+ if (zend_parse_parameters_throw(ZEND_NUM_ARGS(), "z", &state_zv) == FAILURE) {
+ sodium_remove_param_values_from_backtrace(EG(exception));
return;
}
ZVAL_DEREF(state_zv);