Home | History | Annotate | Download | only in sysctl
      1 #!/bin/sh
      2 
      3 SYSCTL="/proc/sys"
      4 TARGET="${SYSCTL}/kernel/domainname"
      5 ORIG=$(cat "${TARGET}")
      6 TEST_STR="Testing sysctl"
      7 
      8 . ./common_tests
      9 
     10 # Only string sysctls support seeking/appending.
     11 MAXLEN=65
     12 
     13 echo -n "Writing entire sysctl in short writes ... "
     14 set_orig
     15 dd if="${TEST_FILE}" of="${TARGET}" bs=1 2>/dev/null
     16 if ! verify "${TARGET}"; then
     17 	echo "FAIL" >&2
     18 	rc=1
     19 else
     20 	echo "ok"
     21 fi
     22 
     23 echo -n "Writing middle of sysctl after unsynchronized seek ... "
     24 set_test
     25 dd if="${TEST_FILE}" of="${TARGET}" bs=1 seek=1 2>/dev/null
     26 if verify "${TARGET}"; then
     27 	echo "FAIL" >&2
     28 	rc=1
     29 else
     30 	echo "ok"
     31 fi
     32 
     33 echo -n "Checking sysctl maxlen is at least $MAXLEN ... "
     34 set_orig
     35 perl -e 'print "A" x ('"${MAXLEN}"'-2), "B";' | \
     36 	dd of="${TARGET}" bs="${MAXLEN}" 2>/dev/null
     37 if ! grep -q B "${TARGET}"; then
     38 	echo "FAIL" >&2
     39 	rc=1
     40 else
     41 	echo "ok"
     42 fi
     43 
     44 echo -n "Checking sysctl keeps original string on overflow append ... "
     45 set_orig
     46 perl -e 'print "A" x ('"${MAXLEN}"'-1), "B";' | \
     47 	dd of="${TARGET}" bs=$(( MAXLEN - 1 )) 2>/dev/null
     48 if grep -q B "${TARGET}"; then
     49 	echo "FAIL" >&2
     50 	rc=1
     51 else
     52 	echo "ok"
     53 fi
     54 
     55 echo -n "Checking sysctl stays NULL terminated on write ... "
     56 set_orig
     57 perl -e 'print "A" x ('"${MAXLEN}"'-1), "B";' | \
     58 	dd of="${TARGET}" bs="${MAXLEN}" 2>/dev/null
     59 if grep -q B "${TARGET}"; then
     60 	echo "FAIL" >&2
     61 	rc=1
     62 else
     63 	echo "ok"
     64 fi
     65 
     66 echo -n "Checking sysctl stays NULL terminated on overwrite ... "
     67 set_orig
     68 perl -e 'print "A" x ('"${MAXLEN}"'-1), "BB";' | \
     69 	dd of="${TARGET}" bs=$(( $MAXLEN + 1 )) 2>/dev/null
     70 if grep -q B "${TARGET}"; then
     71 	echo "FAIL" >&2
     72 	rc=1
     73 else
     74 	echo "ok"
     75 fi
     76 
     77 exit $rc
     78