Skip to content

Commit 13aa7fe

Browse files
authored
Only block < > and Quotes for names of users (hestiacp#3210)
* Only block < > and Quotes for names of users * Fix issues with invalid object names * Increase max length mail alias to standaard + Update tests * Update test * Mail account can also be 64 chars max * Fix test
1 parent 06628c5 commit 13aa7fe

File tree

2 files changed

+47
-8
lines changed

2 files changed

+47
-8
lines changed

func/main.sh

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -684,8 +684,15 @@ is_user_format_valid() {
684684
check_result "$E_INVALID" "invalid $2 format :: $1"
685685
fi
686686
else
687-
if ! [[ "$1" =~ ^[[:alnum:]][-|\.|_[:alnum:]]{0,28}[[:alnum:]]$ ]]; then
688-
check_result "$E_INVALID" "invalid $2 format :: $1"
687+
if [ -n "$3" ]; then
688+
maxlenght=$(($3 - 2))
689+
if ! [[ "$1" =~ ^[[:alnum:]][-|\.|_[:alnum:]]{0,$maxlenght}[[:alnum:]]$ ]]; then
690+
check_result "$E_INVALID" "invalid $2 format :: $1"
691+
fi
692+
else
693+
if ! [[ "$1" =~ ^[[:alnum:]][-|\.|_[:alnum:]]{0,28}[[:alnum:]]$ ]]; then
694+
check_result "$E_INVALID" "invalid $2 format :: $1"
695+
fi
689696
fi
690697
fi
691698
}
@@ -1072,12 +1079,19 @@ is_cron_format_valid() {
10721079
fi
10731080
}
10741081

1075-
# Name validator
1076-
is_name_format_valid() {
1082+
is_object_name_format_valid() {
10771083
if ! [[ "$1" =~ ^[-|\ |\.|_[:alnum:]]{0,50}$ ]]; then
10781084
check_result "$E_INVALID" "invalid $2 format :: $1"
10791085
fi
10801086
}
1087+
# Name validator
1088+
is_name_format_valid() {
1089+
exclude="['|\"|<|>]"
1090+
if [[ "$1" =~ $exclude ]]; then
1091+
check_result "$E_INVALID" "Invalid $2 contains qoutes (\" or ') :: $1"
1092+
fi
1093+
is_no_new_line_format "$1"
1094+
}
10811095

10821096
# Object validator
10831097
is_object_format_valid() {
@@ -1130,7 +1144,7 @@ is_format_valid() {
11301144
if [ -n "$arg" ]; then
11311145
case $arg_name in
11321146
access_key_id) is_access_key_id_format_valid "$arg" "$arg_name" ;;
1133-
account) is_user_format_valid "$arg" "$arg_name" ;;
1147+
account) is_user_format_valid "$arg" "$arg_name" '64' ;;
11341148
action) is_fw_action_format_valid "$arg" ;;
11351149
active) is_boolean_format_valid "$arg" 'active' ;;
11361150
aliases) is_alias_format_valid "$arg" ;;
@@ -1171,7 +1185,7 @@ is_format_valid() {
11711185
ip_status) is_ip_status_format_valid "$arg" ;;
11721186
job) is_int_format_valid "$arg" 'job' ;;
11731187
key) is_common_format_valid "$arg" "$arg_name" ;;
1174-
malias) is_user_format_valid "$arg" "$arg_name" ;;
1188+
malias) is_user_format_valid "$arg" "$arg_name" '64' ;;
11751189
max_db) is_int_format_valid "$arg" 'max db' ;;
11761190
min) is_cron_format_valid "$arg" $arg_name ;;
11771191
month) is_cron_format_valid "$arg" $arg_name ;;
@@ -1187,7 +1201,7 @@ is_format_valid() {
11871201
ns6) is_domain_format_valid "$arg" 'ns6' ;;
11881202
ns7) is_domain_format_valid "$arg" 'ns7' ;;
11891203
ns8) is_domain_format_valid "$arg" 'ns8' ;;
1190-
object) is_name_format_valid "$arg" 'object' ;;
1204+
object) is_object_name_format_valid "$arg" 'object' ;;
11911205
package) is_object_format_valid "$arg" "$arg_name" ;;
11921206
password) is_password_format_valid "$arg" ;;
11931207
port) is_int_format_valid "$arg" 'port' ;;

test/test.bats

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1475,8 +1475,33 @@ function check_ip_not_banned(){
14751475
refute_output
14761476
}
14771477

1478+
@test "MAIL: Add account alias" {
1479+
run v-add-mail-account $user $domain test hestiacprocks
1480+
assert_success
1481+
assert_file_contains /etc/exim4/domains/$domain/aliases "hestiacprocks@$domain"
1482+
refute_output
1483+
}
1484+
1485+
@test "MAIL: Add account alias Invalid length" {
1486+
run v-add-mail-account-alias $user $domain test 'hestiacp-realy-rocks-but-i-want-to-have-feature-xyz-and-i-want-it-now'
1487+
assert_failure $E_INVALID
1488+
}
1489+
@test "MAIL: Add account alias Invalid" {
1490+
run v-add-mail-account-alias $user $domain test '-test'
1491+
assert_failure $E_INVALID
1492+
}
1493+
@test "MAIL: Add account alias Invalid 2" {
1494+
run v-add-mail-account-alias $user $domain test 'hestia@test'
1495+
assert_failure $E_INVALID
1496+
}
1497+
1498+
@test "MAIL: Add account alias (duplicate)" {
1499+
run v-add-mail-account-alias $user $domain test hestiacprocks
1500+
assert_failure $E_EXISTS
1501+
}
1502+
14781503
@test "MAIL: Add account (duplicate)" {
1479-
run v-add-mail-account $user $domain test "$userpass2"
1504+
run v-add-mail-account-alias $user $domain test "$userpass2"
14801505
assert_failure $E_EXISTS
14811506
}
14821507

0 commit comments

Comments
 (0)