diff options
Diffstat (limited to '.travis')
-rw-r--r-- | .travis/build-linux-clang | 22 | ||||
-rw-r--r-- | .travis/build-linux-gcc | 19 | ||||
-rw-r--r-- | .travis/build-linux-mingw | 47 | ||||
-rw-r--r-- | .travis/build-osx-clang | 24 | ||||
-rw-r--r-- | .travis/fuzz-linux-asan | 58 | ||||
-rw-r--r-- | .travis/fuzz-linux-msan | 58 |
6 files changed, 228 insertions, 0 deletions
diff --git a/.travis/build-linux-clang b/.travis/build-linux-clang new file mode 100644 index 0000000..8938461 --- /dev/null +++ b/.travis/build-linux-clang | |||
@@ -0,0 +1,22 @@ | |||
1 | #!/bin/sh -eux | ||
2 | |||
3 | ${CC} --version | ||
4 | |||
5 | # Check exports. | ||
6 | (cd src && ./diff_exports.sh) | ||
7 | |||
8 | # Build and install libcbor. | ||
9 | git clone git://github.com/pjk/libcbor | ||
10 | cd libcbor | ||
11 | git checkout v0.5.0 | ||
12 | mkdir build | ||
13 | (cd build && cmake ..) | ||
14 | make -C build | ||
15 | sudo make -C build install | ||
16 | cd .. | ||
17 | |||
18 | # Build, analyze, and install libfido2. | ||
19 | mkdir build | ||
20 | (cd build && scan-build cmake -DCMAKE_BUILD_TYPE=Debug ..) | ||
21 | scan-build --status-bugs make -C build | ||
22 | sudo make -C build install | ||
diff --git a/.travis/build-linux-gcc b/.travis/build-linux-gcc new file mode 100644 index 0000000..be1e0a9 --- /dev/null +++ b/.travis/build-linux-gcc | |||
@@ -0,0 +1,19 @@ | |||
1 | #!/bin/sh -eux | ||
2 | |||
3 | ${CC} --version | ||
4 | |||
5 | # Build and install libcbor. | ||
6 | git clone git://github.com/pjk/libcbor | ||
7 | cd libcbor | ||
8 | git checkout v0.5.0 | ||
9 | mkdir build | ||
10 | (cd build && cmake ..) | ||
11 | make -C build | ||
12 | sudo make -C build install | ||
13 | cd .. | ||
14 | |||
15 | # Build and install libfido2. | ||
16 | mkdir build | ||
17 | (cd build && cmake -DCMAKE_BUILD_TYPE=Debug ..) | ||
18 | make -C build | ||
19 | sudo make -C build install | ||
diff --git a/.travis/build-linux-mingw b/.travis/build-linux-mingw new file mode 100644 index 0000000..c88ddca --- /dev/null +++ b/.travis/build-linux-mingw | |||
@@ -0,0 +1,47 @@ | |||
1 | #!/bin/sh -eux | ||
2 | |||
3 | # XXX defining CC and cross-compiling confuses OpenSSL's build. | ||
4 | unset CC | ||
5 | |||
6 | sudo mkdir /fakeroot | ||
7 | sudo chmod 755 /fakeroot | ||
8 | |||
9 | cat << EOF > /tmp/mingw.cmake | ||
10 | SET(CMAKE_SYSTEM_NAME Windows) | ||
11 | SET(CMAKE_C_COMPILER i686-w64-mingw32-gcc) | ||
12 | SET(CMAKE_CXX_COMPILER i686-w64-mingw32-g++) | ||
13 | SET(CMAKE_RC_COMPILER i686-w64-mingw32-windres) | ||
14 | SET(CMAKE_FIND_ROOT_PATH /fakeroot) | ||
15 | SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) | ||
16 | SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) | ||
17 | SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) | ||
18 | EOF | ||
19 | |||
20 | # Build and install libcbor. | ||
21 | git clone git://github.com/pjk/libcbor | ||
22 | cd libcbor | ||
23 | git checkout v0.5.0 | ||
24 | mkdir build | ||
25 | (cd build && cmake -DCMAKE_TOOLCHAIN_FILE=/tmp/mingw.cmake \ | ||
26 | -DCMAKE_INSTALL_PREFIX=/fakeroot ..) | ||
27 | make -C build | ||
28 | sudo make -C build install | ||
29 | cd .. | ||
30 | |||
31 | # Build and install OpenSSL 1.1.0j. | ||
32 | git clone git://github.com/openssl/openssl | ||
33 | cd openssl | ||
34 | git checkout OpenSSL_1_1_0j | ||
35 | ./Configure mingw --prefix=/fakeroot --openssldir=/fakeroot/openssl \ | ||
36 | --cross-compile-prefix=i686-w64-mingw32- | ||
37 | make | ||
38 | sudo make install_sw | ||
39 | cd .. | ||
40 | |||
41 | # Build and install libfido2. | ||
42 | export PKG_CONFIG_PATH=/fakeroot/lib/pkgconfig | ||
43 | mkdir build | ||
44 | (cd build && cmake -DCMAKE_TOOLCHAIN_FILE=/tmp/mingw.cmake \ | ||
45 | -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/fakeroot ..) | ||
46 | make -C build | ||
47 | sudo make -C build install | ||
diff --git a/.travis/build-osx-clang b/.travis/build-osx-clang new file mode 100644 index 0000000..69a784c --- /dev/null +++ b/.travis/build-osx-clang | |||
@@ -0,0 +1,24 @@ | |||
1 | #!/bin/sh -eux | ||
2 | |||
3 | ${CC} --version | ||
4 | |||
5 | # Build and install libcbor. | ||
6 | git clone git://github.com/pjk/libcbor | ||
7 | cd libcbor | ||
8 | git checkout v0.5.0 | ||
9 | mkdir build | ||
10 | (cd build && cmake ..) | ||
11 | make -C build | ||
12 | sudo make -C build install | ||
13 | cd .. | ||
14 | |||
15 | # Install mandoc from Homebrew. | ||
16 | brew install mandoc | ||
17 | |||
18 | # Build and install libfido2. | ||
19 | export PKG_CONFIG_PATH=/usr/local/opt/openssl@1.1/lib/pkgconfig | ||
20 | mkdir build | ||
21 | (cd build && cmake -DCMAKE_BUILD_TYPE=Debug ..) | ||
22 | make -C build | ||
23 | make -C build man_symlink_html | ||
24 | sudo make -C build install | ||
diff --git a/.travis/fuzz-linux-asan b/.travis/fuzz-linux-asan new file mode 100644 index 0000000..0a0aebb --- /dev/null +++ b/.travis/fuzz-linux-asan | |||
@@ -0,0 +1,58 @@ | |||
1 | #!/bin/sh -eux | ||
2 | |||
3 | ${CC} --version | ||
4 | |||
5 | FAKEROOT=/fakeroot | ||
6 | sudo mkdir ${FAKEROOT} | ||
7 | sudo chmod 755 ${FAKEROOT} | ||
8 | |||
9 | # Build and install libcbor. | ||
10 | git clone git://github.com/pjk/libcbor | ||
11 | cd libcbor | ||
12 | patch -p0 < ../fuzz/README | ||
13 | mkdir build | ||
14 | cd build | ||
15 | cmake -DCMAKE_C_FLAGS_DEBUG="-g2 -fno-omit-frame-pointer" \ | ||
16 | -DCMAKE_C_COMPILER=clang -DCMAKE_BUILD_TYPE=Debug \ | ||
17 | -DCMAKE_INSTALL_PREFIX=${FAKEROOT} -DSANITIZE=ON \ | ||
18 | -DCMAKE_INSTALL_LIBDIR=lib .. | ||
19 | make | ||
20 | sudo make install | ||
21 | cd ../.. | ||
22 | |||
23 | # Build and install OpenSSL 1.1.1b. | ||
24 | git clone git://github.com/openssl/openssl | ||
25 | cd openssl | ||
26 | git checkout OpenSSL_1_1_1b | ||
27 | ./Configure linux-x86_64-clang enable-asan --prefix=${FAKEROOT} \ | ||
28 | --openssldir=${FAKEROOT}/openssl | ||
29 | make clean | ||
30 | make | ||
31 | sudo make install_sw | ||
32 | cd .. | ||
33 | |||
34 | # Build libfido2. | ||
35 | mkdir build | ||
36 | cd build | ||
37 | export PKG_CONFIG_PATH=/fakeroot/lib/pkgconfig | ||
38 | cmake -DFUZZ=1 -DLIBFUZZER=1 -DASAN=1 -DUBSAN=1 -DCMAKE_C_COMPILER=clang \ | ||
39 | -DCRYPTO_INCLUDE_DIRS=${FAKEROOT}/include \ | ||
40 | -DCRYPTO_LIBRARY_DIRS=${FAKEROOT}/lib \ | ||
41 | -DCBOR_INCLUDE_DIRS=${FAKEROOT}/include \ | ||
42 | -DCBOR_LIBRARY_DIRS=${FAKEROOT}/lib \ | ||
43 | -DCMAKE_BUILD_TYPE=Debug .. | ||
44 | make | ||
45 | |||
46 | # Fuzz with ASAN. | ||
47 | mkdir corpus | ||
48 | tar -C corpus -zxf ../fuzz/corpus.tgz | ||
49 | fuzz/fuzz_cred -use_value_profile=1 -reload=30 -print_pcs=1 \ | ||
50 | -print_funcs=30 -timeout=10 -max_len=17408 -runs=1 corpus/fuzz_cred | ||
51 | fuzz/fuzz_assert -use_value_profile=1 -reload=30 -print_pcs=1 \ | ||
52 | -print_funcs=30 -timeout=10 -max_len=17408 -runs=1 corpus/fuzz_assert | ||
53 | fuzz/fuzz_credman -use_value_profile=1 -reload=30 -print_pcs=1 \ | ||
54 | -print_funcs=30 -timeout=10 -max_len=17408 -runs=1 corpus/fuzz_credman | ||
55 | fuzz/fuzz_mgmt -use_value_profile=1 -reload=30 -print_pcs=1 \ | ||
56 | -print_funcs=30 -timeout=10 -max_len=17408 -runs=1 corpus/fuzz_mgmt | ||
57 | fuzz/fuzz_bio -use_value_profile=1 -reload=30 -print_pcs=1 \ | ||
58 | -print_funcs=30 -timeout=10 -max_len=17408 -runs=1 corpus/fuzz_bio | ||
diff --git a/.travis/fuzz-linux-msan b/.travis/fuzz-linux-msan new file mode 100644 index 0000000..fd7b2ac --- /dev/null +++ b/.travis/fuzz-linux-msan | |||
@@ -0,0 +1,58 @@ | |||
1 | #!/bin/sh -eux | ||
2 | |||
3 | ${CC} --version | ||
4 | |||
5 | FAKEROOT=/fakeroot | ||
6 | sudo mkdir ${FAKEROOT} | ||
7 | sudo chmod 755 ${FAKEROOT} | ||
8 | |||
9 | # Build and install libcbor. | ||
10 | git clone git://github.com/pjk/libcbor | ||
11 | cd libcbor | ||
12 | patch -p0 < ../fuzz/README | ||
13 | mkdir build | ||
14 | cd build | ||
15 | cmake -DCMAKE_C_FLAGS_DEBUG="-fsanitize=memory,undefined -g2 -fno-omit-frame-pointer" \ | ||
16 | -DCMAKE_C_COMPILER=clang -DCMAKE_BUILD_TYPE=Debug \ | ||
17 | -DCMAKE_INSTALL_PREFIX=${FAKEROOT} -DSANITIZE=OFF \ | ||
18 | -DCMAKE_INSTALL_LIBDIR=lib .. | ||
19 | make | ||
20 | sudo make install | ||
21 | cd ../.. | ||
22 | |||
23 | # Build and install OpenSSL 1.1.1b. | ||
24 | git clone git://github.com/openssl/openssl | ||
25 | cd openssl | ||
26 | git checkout OpenSSL_1_1_1b | ||
27 | ./Configure linux-x86_64-clang enable-msan --prefix=${FAKEROOT} \ | ||
28 | --openssldir=${FAKEROOT}/openssl | ||
29 | make clean | ||
30 | make | ||
31 | sudo make install_sw | ||
32 | cd .. | ||
33 | |||
34 | # Build libfido2. | ||
35 | mkdir build | ||
36 | cd build | ||
37 | export PKG_CONFIG_PATH=/fakeroot/lib/pkgconfig | ||
38 | cmake -DFUZZ=1 -DLIBFUZZER=1 -DMSAN=1 -DUBSAN=1 -DCMAKE_C_COMPILER=clang \ | ||
39 | -DCRYPTO_INCLUDE_DIRS=${FAKEROOT}/include \ | ||
40 | -DCRYPTO_LIBRARY_DIRS=${FAKEROOT}/lib \ | ||
41 | -DCBOR_INCLUDE_DIRS=${FAKEROOT}/include \ | ||
42 | -DCBOR_LIBRARY_DIRS=${FAKEROOT}/lib \ | ||
43 | -DCMAKE_BUILD_TYPE=Debug .. | ||
44 | make | ||
45 | |||
46 | # Fuzz with MSAN. | ||
47 | mkdir corpus | ||
48 | tar -C corpus -zxf ../fuzz/corpus.tgz | ||
49 | fuzz/fuzz_cred -use_value_profile=1 -reload=30 -print_pcs=1 \ | ||
50 | -print_funcs=30 -timeout=10 -max_len=17408 -runs=1 corpus/fuzz_cred | ||
51 | fuzz/fuzz_assert -use_value_profile=1 -reload=30 -print_pcs=1 \ | ||
52 | -print_funcs=30 -timeout=10 -max_len=17408 -runs=1 corpus/fuzz_assert | ||
53 | fuzz/fuzz_credman -use_value_profile=1 -reload=30 -print_pcs=1 \ | ||
54 | -print_funcs=30 -timeout=10 -max_len=17408 -runs=1 corpus/fuzz_credman | ||
55 | fuzz/fuzz_mgmt -use_value_profile=1 -reload=30 -print_pcs=1 \ | ||
56 | -print_funcs=30 -timeout=10 -max_len=17408 -runs=1 corpus/fuzz_mgmt | ||
57 | fuzz/fuzz_bio -use_value_profile=1 -reload=30 -print_pcs=1 \ | ||
58 | -print_funcs=30 -timeout=10 -max_len=17408 -runs=1 corpus/fuzz_bio | ||