require "vnd.stalwart.testsuite"; require "variables"; require "encoded-character"; /* * Variable size limit */ test_config_set "sieve_variables_max_variable_size" "4000"; test_config_reload :extension "variables"; set "a" text: 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 . ; test "Variable size limit" { set :length "alen" "${a}"; if not string "${alen}" "4000" { test_fail "variable 'a' not 4000 bytes long (${alen}) [0]"; } set "a" "${a}b"; set :length "alen" "${a}"; if not string "${alen}" "4000" { test_fail "variable 'a' not 4000 bytes long (${alen}) [1]"; } set "a" "${a}${a}"; set :length "alen" "${a}"; if not string "${alen}" "4000" { test_fail "variable 'a' not 4000 bytes long (${alen}) [2]"; } test_config_set "sieve_variables_max_variable_size" "8000"; test_config_reload :extension "variables"; set "a" "${a}${a}"; set :length "alen" "${a}"; if not string "${alen}" "8000" { test_fail "variable 'a' not 8000 bytes long (${alen})"; } } /* * Variable size limit UTF-8 */ test_config_set "sieve_variables_max_variable_size" "4000"; test_config_reload :extension "variables"; set "b" text: 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 012345678901234567890123456789012345678901234567 01234567890123456789012345678901234567890123456 . ; test "Variable size limit UTF-8" { set :length "blen" "${b}"; if not string "${blen}" "3999" { test_fail "variable 'b' not 3999 bytes long (${blen}) [0]"; } set "b" "${b}${unicode:4e03}"; set :length "blen" "${b}"; if not string "${blen}" "3999" { test_fail "variable 'b' not 3999 bytes long (${blen}) [1]"; } set "b" "${b}ccc"; set :length "blen" "${b}"; if not string "${blen}" "4000" { test_fail "variable 'b' not 4000 bytes long (${blen})"; } } /* * :quotewildcard variable size limit */ test_config_set "sieve_variables_max_variable_size" "4000"; test_config_reload :extension "variables"; set "c" text: ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** ************************************** . ; test ":quotewildcard variable size limit" { set :length "clen" "${c}"; if not string "${clen}" "4000" { test_fail "variable 'c' not 4000 bytes long (${clen}) [0]"; } set "d" "0${c}"; set :quotewildcard "c" "${c}"; set :length "clen" "${c}"; if not string "${clen}" "4000" { test_fail "variable 'c' not 4000 bytes long (${clen}) [1]"; } set :quotewildcard "d" "${d}"; set :length "dlen" "${d}"; if not string "${dlen}" "3999" { test_fail "variable 'd' not 3999 bytes long (${dlen})"; } if not string :is text: ${d} . text: 0\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\* \*\*\*\*\*\*\*\*\*\* . { test_fail "variable 'd' has unexpected value"; } }