summaryrefslogtreecommitdiff
path: root/src/sp_cookie_encryption.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/sp_cookie_encryption.c')
-rw-r--r--src/sp_cookie_encryption.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/sp_cookie_encryption.c b/src/sp_cookie_encryption.c
index 9e585c5..2bb305f 100644
--- a/src/sp_cookie_encryption.c
+++ b/src/sp_cookie_encryption.c
@@ -53,13 +53,13 @@ int decrypt_cookie(zval *pDest, int num_args, va_list args,
53 return ZEND_HASH_APPLY_KEEP; 53 return ZEND_HASH_APPLY_KEEP;
54 } 54 }
55 55
56 generate_key(key); 56 /* If the cookie has no value, it shouldn't be encrypted. */
57 57 if (0 == Z_STRLEN_P(pDest)) {
58 if (Z_STRLEN_P(pDest) == 0) {
59 return ZEND_HASH_APPLY_KEEP; 58 return ZEND_HASH_APPLY_KEEP;
60 } 59 }
61 60
62 debase64 = php_base64_decode((unsigned char *)(Z_STRVAL_P(pDest)), Z_STRLEN_P(pDest)); 61 debase64 = php_base64_decode((unsigned char *)(Z_STRVAL_P(pDest)),
62 Z_STRLEN_P(pDest));
63 63
64 if (ZSTR_LEN(debase64) < 64 if (ZSTR_LEN(debase64) <
65 crypto_secretbox_NONCEBYTES + crypto_secretbox_ZEROBYTES) { 65 crypto_secretbox_NONCEBYTES + crypto_secretbox_ZEROBYTES) {
@@ -68,6 +68,8 @@ int decrypt_cookie(zval *pDest, int num_args, va_list args,
68 return ZEND_HASH_APPLY_REMOVE; 68 return ZEND_HASH_APPLY_REMOVE;
69 } 69 }
70 70
71 generate_key(key);
72
71 decrypted = pecalloc(ZSTR_LEN(debase64), 1, 0); 73 decrypted = pecalloc(ZSTR_LEN(debase64), 1, 0);
72 74
73 ret = crypto_secretbox_open( 75 ret = crypto_secretbox_open(