This file is indexed.

/var/lib/pcp/testsuite/badarchives/mk.badlog is in pcp-testsuite 4.0.1-1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
#!/bin/sh
#
# Recipes for making badlog-* family of archives.
# 
# Every one is based on a version of ./ok-foo, with binary editing using
# bvi (or similar) and cut-n-paste with dd.
#

src=./ok-foo

tmp=/var/tmp/$$
trap "rm -f $tmp.*; exit 0" 0 1 2 3 15

if [ $# -eq 0 ]
then
    # Set up for a new badlog-X archive
    #
    X=`ls badlog-*.0 2>/dev/null | tail -1 | sed -e 's/badlog-//' -e 's/\.0//'`
    if [ -z "$X" ]
    then
	X=1
    else
	X=`expr $X + 1`
    fi
elif [ $# -eq 1 ]
then
    X="$1"
    rm -f badlog-$X.*
else
    echo "Usage: mkbadlog [case#]"
    exit 1
fi

# byte offsets into ok-foo.0
# 0	start label record
# 132	start record[1] (preamble)
# 284	start record[2]
# 496	start record[3]
# 708	start record[4]
# 920	start record[5]
# 1132	start record[6]
# ...
#
# within an record (after the first)
# +0	length header
# +4	timestamp.tv_sec
# +8	timestamp.tv_usec
# +12	numpmid
# +16	pmid[0] sample.lights 0x740002E
# +20	numval[0] (1)
# +24	valfmt[0] (1)
# +28	inst[0][0] (-1)
# +32	
# +36	pmid[1] sample.drift 0x7400007
# +40	numval[1] (1)
# +44	valfmt[1] (0)
# +48	inst[1][0] (-1)
# +52	value
# +56	pmid[2] sample.bin 0x7400006
# +60	numval[2] (9)
# +64	valfmt[2] (0)
# +68	inst[2][0] (100)
# +72	value 100
# ...
# +132	inst[2][8] (900)
# +136	value 900
# +140	pmid[3] sample.colour 0x7400005
# +144	numval[3] (3)
# +148	valfmt[3] (0)
# +152	inst[3][0] (0)
# +156	value (for red)
# +160	inst[3][1] (1)
# +164	value (for green)
# +168	inst[3][2] (2)
# +172	value (for blue)
# +176	pmid[4] sample.seconds 0x7400002
# +180	numval[4] (1)
# +184	valfmt[4] (0)
# +188	inst[4][0] (-1)
# +192	value
# +196 ... value block for sample.lights 
#

# First Pass - edit selected files
#
case $X
in
    1)	# log broken in the middle of an entry
	dd if=$src.0 of=badlog-$X.0 bs=1 count=700
	;;

    2)	# counter goes backwards in record[4] 900 = 708+192
	cp $src.0 badlog-$X.0
	echo '900s\\....\\00000001\\' >$tmp.ex
	;;

    3)	# timestamp goes backwards at record[3] 500 = 496+4
	cp $src.0 badlog-$X.0
	echo '500s\\....\\2FAF0800\\' >$tmp.ex
	;;

    4)	# timestamp in label comes from record[4], so records[1], [2] and [3]
        # have a timestamp before the label timestamp
	# and truncated temporal index (only 1 entry)
	cp $src.0 badlog-$X.0
	cp $src.meta badlog-$X.meta
	dd if=$src.index of=badlog-$X.index bs=1 count=152
	echo '12s\\....\\35C9F73B\\' >$tmp.ex
	echo '16s\\....\\0003F149\\' >>$tmp.ex
	;;

    *)
	echo "Error: no recipe for badlog-$X"
	exit 1
	;;

esac

if [ -f $tmp.ex ]
then
    echo 'w' >>$tmp.ex
    echo 'q' >>$tmp.ex

    for file in badlog-$X.*
    do
	if which bvi >/dev/null 2>&1
	then
	    bvi -f $tmp.ex $file
	else
	    echo "bvi not installed"
	    echo "Need to apply the equivalent of this binary editing to $file"
	    cat $tmp.ex
	fi
    done

fi

# Second Pass - copy any missing files
#
for file in badlog-$X.0 badlog-$X.meta badlog-$X.index
do
    if [ -f $file ]
    then
	:
    else
	target=`echo $file | sed -e "s/badlog-$X/.\/ok-foo/"`
	if cp $target $file
	then
	    :
	else
	    echo "Failed: cp $target $file"
	    exit 1
	fi
    fi
done

# Third Pass - fix ups
#
case $X
in
    4)  # whack timestamp in index entry[0]
	echo '132s\\....\\35C9F73B\\' >$tmp.ex
	echo '136s\\....\\0003F149\\' >>$tmp.ex
	echo 'w' >>$tmp.ex
	echo 'q' >>$tmp.ex
	bvi -f $tmp.ex badlog-4.index
	;;

esac

echo "badlog-$X created."

exit