summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--regress/usr.sbin/snmpd/snmpd.sh40
1 files changed, 39 insertions, 1 deletions
diff --git a/regress/usr.sbin/snmpd/snmpd.sh b/regress/usr.sbin/snmpd/snmpd.sh
index e4d41b489de..cafe2b6bf2c 100644
--- a/regress/usr.sbin/snmpd/snmpd.sh
+++ b/regress/usr.sbin/snmpd/snmpd.sh
@@ -1,6 +1,6 @@
#!/bin/sh
#
-# $OpenBSD: snmpd.sh,v 1.11 2019/10/03 11:05:54 martijn Exp $
+# $OpenBSD: snmpd.sh,v 1.12 2020/08/08 11:06:40 martijn Exp $
#/*
# * Copyright (c) Rob Pierce <rob@openbsd.org>
# *
@@ -250,6 +250,9 @@ wait
# # # # # CONFIG FOUR # # # # #
echo "\nConfiguration: non-default community strings, custom oids\n"
+replacement="$(printf '\357\277\275')"
+oe="$(printf '\303\266')"
+boe="$(printf '\303')"
cat > ${OBJDIR}/snmpd.conf <<EOF
# This is config template (4) for snmpd regression testing
# Restrict daemon to listen on localhost only
@@ -262,6 +265,9 @@ read-write community non-default-rw
oid 1.3.6.1.4.1.30155.42.1 name myName read-only string "humppa"
oid 1.3.6.1.4.1.30155.42.2 name myStatus read-only integer 1
+# No need to place a full index, we just need the object
+oid 1.3.6.1.6.3.15.1.2.2.1.3.1 name Reyk read-only string "Reyk Fl${oe}ter"
+oid 1.3.6.1.6.3.15.1.2.2.1.3.2 name broken read-only string "br${boe}ken"
EOF
(cd ${OBJDIR} && nohup snmpd -dvf ./snmpd.conf > snmpd.log 2>&1) &
@@ -332,6 +338,38 @@ then
FAILED=1
fi
+snmp_command="snmp get -Oqv -v2c -c non-default-rw localhost \
+ usmUserSecurityName.1.0"
+echo ======= $snmp_command
+reyk="$(eval LC_ALL=en_US.UTF-8 $snmp_command)"
+if [ "$reyk" != "Reyk Fl${oe}ter" ]
+then
+ echo "Printing of UTF-8 string in UTF-8 locale failed"
+ FAILED=1
+fi
+reyk="$(eval LC_ALL=C $snmp_command)"
+if [ "$reyk" != "Reyk Fl.ter" ]
+then
+ echo "Printing of UTF-8 string in C locale failed"
+ FAILED=1
+fi
+
+snmp_command="snmp get -Oqv -v2c -c non-default-rw localhost \
+ usmUserSecurityName.2.0"
+echo ======= $snmp_command
+broken="$(eval LC_ALL=en_US.UTF-8 $snmp_command)"
+if [ "$broken" != "br${replacement}ken" ]
+then
+ echo "Printing of UTF-8 replacement character failed"
+ FAILED=1
+fi
+broken="$(LC_ALL=C eval $snmp_command)"
+if [ "$broken" != "br?ken" ]
+then
+ echo "Printing of question mark in C locale failed"
+ FAILED=1
+fi
+
kill $(pgrep snmpd) >/dev/null 2>&1
case $FAILED in