77 lines · 1.6 KB · Text
RawDownload
#!/bin/sh SYSCTL="/proc/sys"TARGET="${SYSCTL}/kernel/domainname"ORIG=$(cat "${TARGET}")TEST_STR="Testing sysctl" . ./common_tests # Only string sysctls support seeking/appending.MAXLEN=65 echo -n "Writing entire sysctl in short writes ... "set_origdd if="${TEST_FILE}" of="${TARGET}" bs=1 2>/dev/nullif ! verify "${TARGET}"; then	echo "FAIL" >&2	rc=1else	echo "ok"fi echo -n "Writing middle of sysctl after unsynchronized seek ... "set_testdd if="${TEST_FILE}" of="${TARGET}" bs=1 seek=1 2>/dev/nullif verify "${TARGET}"; then	echo "FAIL" >&2	rc=1else	echo "ok"fi echo -n "Checking sysctl maxlen is at least $MAXLEN ... "set_origperl -e 'print "A" x ('"${MAXLEN}"'-2), "B";' | \	dd of="${TARGET}" bs="${MAXLEN}" 2>/dev/nullif ! grep -q B "${TARGET}"; then	echo "FAIL" >&2	rc=1else	echo "ok"fi echo -n "Checking sysctl keeps original string on overflow append ... "set_origperl -e 'print "A" x ('"${MAXLEN}"'-1), "B";' | \	dd of="${TARGET}" bs=$(( MAXLEN - 1 )) 2>/dev/nullif grep -q B "${TARGET}"; then	echo "FAIL" >&2	rc=1else	echo "ok"fi echo -n "Checking sysctl stays NULL terminated on write ... "set_origperl -e 'print "A" x ('"${MAXLEN}"'-1), "B";' | \	dd of="${TARGET}" bs="${MAXLEN}" 2>/dev/nullif grep -q B "${TARGET}"; then	echo "FAIL" >&2	rc=1else	echo "ok"fi echo -n "Checking sysctl stays NULL terminated on overwrite ... "set_origperl -e 'print "A" x ('"${MAXLEN}"'-1), "BB";' | \	dd of="${TARGET}" bs=$(( $MAXLEN + 1 )) 2>/dev/nullif grep -q B "${TARGET}"; then	echo "FAIL" >&2	rc=1else	echo "ok"fi exit $rc