123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #!/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_orig
- dd if="${TEST_FILE}" of="${TARGET}" bs=1 2>/dev/null
- if ! verify "${TARGET}"; then
- echo "FAIL" >&2
- rc=1
- else
- echo "ok"
- fi
- echo -n "Writing middle of sysctl after unsynchronized seek ... "
- set_test
- dd if="${TEST_FILE}" of="${TARGET}" bs=1 seek=1 2>/dev/null
- if verify "${TARGET}"; then
- echo "FAIL" >&2
- rc=1
- else
- echo "ok"
- fi
- echo -n "Checking sysctl maxlen is at least $MAXLEN ... "
- set_orig
- perl -e 'print "A" x ('"${MAXLEN}"'-2), "B";' | \
- dd of="${TARGET}" bs="${MAXLEN}" 2>/dev/null
- if ! grep -q B "${TARGET}"; then
- echo "FAIL" >&2
- rc=1
- else
- echo "ok"
- fi
- echo -n "Checking sysctl keeps original string on overflow append ... "
- set_orig
- perl -e 'print "A" x ('"${MAXLEN}"'-1), "B";' | \
- dd of="${TARGET}" bs=$(( MAXLEN - 1 )) 2>/dev/null
- if grep -q B "${TARGET}"; then
- echo "FAIL" >&2
- rc=1
- else
- echo "ok"
- fi
- echo -n "Checking sysctl stays NULL terminated on write ... "
- set_orig
- perl -e 'print "A" x ('"${MAXLEN}"'-1), "B";' | \
- dd of="${TARGET}" bs="${MAXLEN}" 2>/dev/null
- if grep -q B "${TARGET}"; then
- echo "FAIL" >&2
- rc=1
- else
- echo "ok"
- fi
- echo -n "Checking sysctl stays NULL terminated on overwrite ... "
- set_orig
- perl -e 'print "A" x ('"${MAXLEN}"'-1), "BB";' | \
- dd of="${TARGET}" bs=$(( $MAXLEN + 1 )) 2>/dev/null
- if grep -q B "${TARGET}"; then
- echo "FAIL" >&2
- rc=1
- else
- echo "ok"
- fi
- exit $rc
|