Skip to content

Commit 1f487c8

Browse files
committed
CI:test:fuzzer: adopt for generate & configure stages
1 parent 522a772 commit 1f487c8

File tree

1 file changed

+87
-6
lines changed

1 file changed

+87
-6
lines changed

tests/config_fuzzer/runner.sh

Lines changed: 87 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ FAKEDATADIR=fakedata
1414
CC=gcc
1515
BUILDDIR=${NETPLANPATH}/_fuzzer_build
1616
NETPLAN_GENERATE_PATH=${BUILDDIR}/src/generate
17+
NETPLAN_CONFIGURE_PATH=${BUILDDIR}/src/configure
1718

1819
export G_DEBUG=fatal_criticals
1920
export LD_LIBRARY_PATH=${BUILDDIR}/src
@@ -47,8 +48,15 @@ do
4748
rm -rf fakeroot fakeroot2
4849
mkdir -p fakeroot/etc/netplan fakeroot2/etc/netplan
4950
cp ${yaml} fakeroot/etc/netplan/
50-
51-
OUTPUT=$(${NETPLAN_GENERATE_PATH} --root-dir fakeroot 2>&1)
51+
GENERATOR_DIR=$(pwd)/fakeroot/run/systemd/generate
52+
53+
OUTPUT=$(systemd-run --user --pty --collect \
54+
"--property=ReadOnlyPaths=/" \
55+
"--property=ReadWritePaths=${GENERATOR_DIR}" \
56+
"--property=ReadWritePaths=${GENERATOR_DIR}.early" \
57+
"--property=ReadWritePaths=${GENERATOR_DIR}.late" \
58+
${NETPLAN_GENERATE_PATH} --root-dir fakeroot \
59+
"${GENERATOR_DIR}" "${GENERATOR_DIR}.early" "${GENERATOR_DIR}.late" 2>&1)
5260
code=$?
5361
if [ $code -eq 139 ] || [ $code -eq 245 ] || [ $code -eq 133 ]
5462
then
@@ -75,6 +83,33 @@ do
7583
echo "YAML: ${yaml}" >> "${RESULTS_DIR}"/generate.log
7684
echo "${OUTPUT}" >> "${RESULTS_DIR}"/generate.log
7785

86+
OUTPUT=$(${NETPLAN_CONFIGURE_PATH} --root-dir fakeroot 2>&1)
87+
code=$?
88+
if [ $code -eq 139 ] || [ $code -eq 245 ] || [ $code -eq 133 ]
89+
then
90+
dir=${RESULTS_DIR}/crash_$(date "+%Y%m%d%H.%N")
91+
echo "CONFIGURE CRASHED: ${OUTPUT}"
92+
echo "YAML THE CAUSED THE CRASH:"
93+
cat ${yaml}
94+
echo "CONFIGURE: Saving crash to ${dir}"
95+
cp -r fakeroot ${dir}
96+
error=1
97+
fi
98+
99+
if grep 'detected memory leaks' <<< "$OUTPUT" > /dev/null
100+
then
101+
dir=${RESULTS_DIR}/crash_$(date "+%Y%m%d%H.%N")
102+
echo "CONFIGURE MEMORY LEAK DETECTED: ${OUTPUT}"
103+
echo "YAML THE CAUSED THE MEMORY LEAK:"
104+
cat ${yaml}
105+
echo "CONFIGURE: Saving memory leak to ${dir}"
106+
cp -r fakeroot ${dir}
107+
error=1
108+
fi
109+
110+
echo "${OUTPUT}" >> "${RESULTS_DIR}"/generate.log
111+
112+
GENERATOR_DIR=$(pwd)/fakeroot2/run/systemd/generate
78113
if [ -d fakeroot/run ] && [ -d fakeroot/run/NetworkManager ]
79114
then
80115
for keyfile in $(find fakeroot/run/NetworkManager/system-connections/ -type f 2>/dev/null)
@@ -92,7 +127,13 @@ do
92127
fi
93128
done
94129

95-
OUTPUT=$(${NETPLAN_GENERATE_PATH} --root-dir fakeroot2 2>&1)
130+
OUTPUT=$(systemd-run --user --pty --collect \
131+
"--property=ReadOnlyPaths=/" \
132+
"--property=ReadWritePaths=${GENERATOR_DIR}" \
133+
"--property=ReadWritePaths=${GENERATOR_DIR}.early" \
134+
"--property=ReadWritePaths=${GENERATOR_DIR}.late" \
135+
${NETPLAN_GENERATE_PATH} --root-dir fakeroot2 \
136+
"${GENERATOR_DIR}" "${GENERATOR_DIR}.early" "${GENERATOR_DIR}.late" 2>&1)
96137
code=$?
97138
if [ $code -eq 139 ] || [ $code -eq 245 ] || [ $code -eq 133 ]
98139
then
@@ -113,22 +154,47 @@ do
113154
fi
114155
echo "${OUTPUT}" >> "${RESULTS_DIR}"/generate_from_keyfile.log
115156

116-
fi
157+
OUTPUT=$(${NETPLAN_CONFIGURE_PATH} --root-dir fakeroot2 2>&1)
158+
code=$?
159+
if [ $code -eq 139 ] || [ $code -eq 245 ] || [ $code -eq 133 ]
160+
then
161+
dir=${RESULTS_DIR}/generate_from_keyfile_$(date "+%Y%m%d%H.%N")
162+
echo "CONFIGURE FROM KEYFILE GENERATED YAMLS CRASHED: ${OUTPUT}"
163+
echo "CONFIGURE: Saving crash to ${dir}"
164+
cp -r fakeroot2 ${dir}
165+
error=1
166+
fi
117167

168+
if grep 'detected memory leaks' <<< "$OUTPUT" > /dev/null
169+
then
170+
dir=${RESULTS_DIR}/generate_from_keyfile_$(date "+%Y%m%d%H.%N")
171+
echo "CONFIGURE FROM KEYFILE GENERATED YAML MEMORY LEAK DETECTED: ${OUTPUT}"
172+
echo "CONFIGURE: Saving memory leak to ${dir}"
173+
cp -r fakeroot2 ${dir}
174+
error=1
175+
fi
176+
echo "${OUTPUT}" >> "${RESULTS_DIR}"/generate_from_keyfile.log
177+
fi
118178
done
119179

120180
echo "$(date) - Done"
121181

122182
echo "$(date) - Running netplan generate -i"
123183

184+
GENERATOR_DIR=$(pwd)/fakeroot3/run/systemd/generate
124185
for yaml in ${FAKEDATADIR}/*.yaml
125186
do
126187
rm -rf fakeroot3
127188
mkdir -p fakeroot3/etc/netplan
128189
cp ${yaml} fakeroot3/etc/netplan/
129190

130-
OUTPUT=$(${NETPLAN_GENERATE_PATH} --root-dir fakeroot3 -i 2>&1)
131-
code=$?
191+
OUTPUT=$(systemd-run --user --pty --collect \
192+
"--property=ReadOnlyPaths=/" \
193+
"--property=ReadWritePaths=${GENERATOR_DIR}" \
194+
"--property=ReadWritePaths=${GENERATOR_DIR}.early" \
195+
"--property=ReadWritePaths=${GENERATOR_DIR}.late" \
196+
${NETPLAN_GENERATE_PATH} --root-dir fakeroot3 \
197+
"${GENERATOR_DIR}" "${GENERATOR_DIR}.early" "${GENERATOR_DIR}.late" 2>&1) code=$?
132198
if [ $code -eq 139 ] || [ $code -eq 245 ] || [ $code -eq 133 ]
133199
then
134200
echo "GENERATE --ignore-errors CRASHED"
@@ -143,6 +209,21 @@ do
143209
error=1
144210
fi
145211

212+
OUTPUT=$(${NETPLAN_CONFIGURE_PATH} --root-dir fakeroot3 -i 2>&1)
213+
code=$?
214+
if [ $code -eq 139 ] || [ $code -eq 245 ] || [ $code -eq 133 ]
215+
then
216+
echo "CONFIGURE --ignore-errors CRASHED"
217+
cat ${yaml}
218+
error=1
219+
fi
220+
221+
if grep 'detected memory leaks' <<< "$OUTPUT" > /dev/null
222+
then
223+
echo "CONFIGURE --ignore-errors MEMORY LEAK DETECTED"
224+
cat ${yaml}
225+
error=1
226+
fi
146227
done
147228

148229
echo "$(date) - Done"

0 commit comments

Comments
 (0)