blob: 86bce92a990906d53f89dfbe13812d2f9e8c9b21 (
plain) (
blame)
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
|
#!/bin/sh
set -e
announce() {
count=$(echo "$1" | wc -c)
python3 -c "
import math
s = '$1'
c = 80
print()
print('#'*c)
print('#' + ' '*math.floor((c - len(s))/2-1) + s + ' '*math.ceil((c - len(s))/2-1) + '#')
print('#'*c)
print()
"
}
checkleaks() {
valgrind --leak-check=full ./printdoc 2>&1 | tee /tmp/testlog
if [ -z "$(grep "no leaks are possible" /tmp/testlog)" ]; then
echo "Valgrind exited with errors!"
exit 1
fi
}
export RESULTDIR="scans"
if [ "$1" == "stl" ]; then
announce "Testing ASCII STL Parsing"
(
echo "submit"
cat tests/sample-ascii.stl | wc -c
cat tests/sample-ascii.stl
) | checkleaks
announce "Testing BIN STL Parsing"
(
echo "submit"
cat tests/sample-binary.stl | wc -c
cat tests/sample-binary.stl
echo "testname"
) | checkleaks
elif [ "$1" == "poc" ]; then
announce "Testing Proof-Of-Concept"
rm -rf scans/*
echo -e "\n--- Uploading target STL ---\n" 1>&2
(
echo "submit"
cat tests/sample-ascii.stl | wc -c
cat tests/sample-ascii.stl
) | ./printdoc
echo -e "\n--- Uploading evil STL ---\n" 1>&2
(
echo "submit"
cat tests/evil1.stl | wc -c
cat tests/evil1.stl
echo -e "AAAA\xff"
) | ./printdoc
echo -e "\n--- Testing Exploit ---\n" 1>&2
(
echo "query"
echo -e "AAAA\xff"
echo "0"
echo "n"
echo "query"
echo "1"
) | checkleaks
else
(
echo "submit"
echo "2"
echo "AA"
echo "AAAA"
) | ./printdoc
fi
|