Skip to content

Commit ab7a2ea

Browse files
committed
add result validation to dyndisc example scripts
reported by Philipp Jeitner and Haya Shulman, Fraunhofer SIT
1 parent 12a1703 commit ab7a2ea

File tree

2 files changed

+42
-18
lines changed

2 files changed

+42
-18
lines changed

tools/naptr-eduroam.sh

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,41 +19,53 @@ DIGCMD=$(command -v dig)
1919
HOSTCMD=$(command -v host)
2020
PRINTCMD=$(command -v printf)
2121

22+
validate_host() {
23+
echo ${@} | tr -d '\n\t\r' | grep -E '^[_0-9a-zA-Z][-._0-9a-zA-Z]*$'
24+
}
25+
26+
validate_port() {
27+
echo ${@} | tr -d '\n\t\r' | grep -E '^[0-9]+$'
28+
}
29+
2230
dig_it_srv() {
2331
${DIGCMD} +short srv $SRV_HOST | sort -n -k1 |
2432
while read line; do
25-
set $line ; PORT=$3 ; HOST=$4
26-
$PRINTCMD "\thost ${HOST%.}:${PORT}\n"
33+
set $line ; PORT=$(validate_port $3) ; HOST=$(validate_host $4)
34+
if [ -n "${HOST}" ] && [ -n "${PORT}" ]; then
35+
$PRINTCMD "\thost ${HOST%.}:${PORT}\n"
36+
fi
2737
done
2838
}
2939

3040
dig_it_naptr() {
3141
${DIGCMD} +short naptr ${REALM} | grep x-eduroam:radius.tls | sort -n -k1 |
3242
while read line; do
33-
set $line ; TYPE=$3 ; HOST=$6
34-
if [ "$TYPE" = "\"s\"" -o "$TYPE" = "\"S\"" ]; then
35-
SRV_HOST=${HOST%.}
36-
dig_it_srv
37-
fi
43+
set $line ; TYPE=$3 ; HOST=$(validate_host $6)
44+
if ( [ "$TYPE" = "\"s\"" ] || [ "$TYPE" = "\"S\"" ] ) && [ -n "${HOST}" ]; then
45+
SRV_HOST=${HOST%.}
46+
dig_it_srv
47+
fi
3848
done
3949
}
4050

4151
host_it_srv() {
4252
${HOSTCMD} -t srv $SRV_HOST | sort -n -k5 |
4353
while read line; do
44-
set $line ; PORT=$7 ; HOST=$8
45-
$PRINTCMD "\thost ${HOST%.}:${PORT}\n"
54+
set $line ; PORT=$(validate_port $7) ; HOST=$(validate_host $8)
55+
if [ -n "${HOST}" ] && [ -n "${PORT}" ]; then
56+
$PRINTCMD "\thost ${HOST%.}:${PORT}\n"
57+
fi
4658
done
4759
}
4860

4961
host_it_naptr() {
5062
${HOSTCMD} -t naptr ${REALM} | grep x-eduroam:radius.tls | sort -n -k5 |
5163
while read line; do
52-
set $line ; TYPE=$7 ; HOST=${10}
53-
if [ "$TYPE" = "\"s\"" -o "$TYPE" = "\"S\"" ]; then
54-
SRV_HOST=${HOST%.}
55-
host_it_srv
56-
fi
64+
set $line ; TYPE=$7 ; HOST=$(validate_host ${10})
65+
if ( [ "$TYPE" = "\"s\"" ] || [ "$TYPE" = "\"S\"" ] ) && [ -n "${HOST}" ]; then
66+
SRV_HOST=${HOST%.}
67+
host_it_srv
68+
fi
5769
done
5870
}
5971

tools/radsec-dynsrv.sh

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,31 @@ DIGCMD=$(command -v digaaa)
1919
HOSTCMD=$(command -v host)
2020
PRINTCMD=$(command -v printf)
2121

22+
validate_host() {
23+
echo ${@} | tr -d '\n\t\r' | grep -E '^[_0-9a-zA-Z][-._0-9a-zA-Z]*$'
24+
}
25+
26+
validate_port() {
27+
echo ${@} | tr -d '\n\t\r' | grep -E '^[0-9]+$'
28+
}
29+
2230
dig_it() {
2331
${DIGCMD} +short srv _radsec._tcp.${REALM} | sort -n -k1 |
2432
while read line ; do
25-
set $line ; PORT=$3 ; HOST=$4
26-
$PRINTCMD "\thost ${HOST%.}:${PORT}\n"
33+
set $line ; PORT=$(validate_port $3) ; HOST=$(validate_host $4)
34+
if [ -n "${HOST}" ] && [ -n "${PORT}" ]; then
35+
$PRINTCMD "\thost ${HOST%.}:${PORT}\n"
36+
fi
2737
done
2838
}
2939

3040
host_it() {
3141
${HOSTCMD} -t srv _radsec._tcp.${REALM} | sort -n -k5 |
3242
while read line ; do
33-
set $line ; PORT=$7 ; HOST=$8
34-
$PRINTCMD "\thost ${HOST%.}:${PORT}\n"
43+
set $line ; PORT=$(validate_port $7) ; HOST=$(validate_host $8)
44+
if [ -n "${HOST}" ] && [ -n "${PORT}" ]; then
45+
$PRINTCMD "\thost ${HOST%.}:${PORT}\n"
46+
fi
3547
done
3648
}
3749

0 commit comments

Comments
 (0)