New function safe_set_var(): Safe wrapper for set_var()

When using set_var() with a variable as in input for name of the variable,
use this wrapper to verify the input is suitable as a variable name.

Signed-off-by: Richard T Bonhomme <tincantech@protonmail.com>
This commit is contained in:
Richard T Bonhomme 2022-12-10 13:17:39 +00:00
parent 8ca58f11ad
commit b578efcb50
No known key found for this signature in database
GPG Key ID: 2D767DB92FB6C246

View File

@ -3714,6 +3714,18 @@ db_date_to_ff_date() {
ff_date="${yy}-${mm}-${dd} ${HH}:${MM}:${SS}${TZ}"
} # => build_ff_date_string()
# sanatize and set var
safe_set_var() {
[ "$#" -eq 2 ] || return 1
# check for simple errors
case "$1" in
[1234567890]*|*-*|"* *") return 1
esac
eval "$1"=1 || return 1
unset -v "$1" || return 1
set_var "$1" "$2" || return 1
} # => safe_set_var()
# get the serial number of the certificate -> serial=XXXX
ssl_cert_serial() {
[ "$#" = 2 ] || die "ssl_cert_serial - invalid input"
@ -3723,15 +3735,14 @@ ssl_cert_serial() {
fn_ssl_out="$(
unset -v EASYRSA_DEBUG
easyrsa_openssl x509 -in "$1" -noout -serial
)" || die "ssl_cert_serial - failed to get serial"
shift
)" || die "ssl_cert_serial - failed: -serial"
# remove the serial= part -> we only need the XXXX part
fn_ssl_out="${fn_ssl_out##*=}"
unset -v "$@"
set_var "$@" "$fn_ssl_out" || \
shift
safe_set_var "$*" "$fn_ssl_out" || \
die "ssl_cert_serial - failed to set variable '$*'"
unset -v fn_ssl_out
} # => ssl_cert_serial()