Skip to content

Commit 402ff88

Browse files
committed
Add ldap support to curl fuzzer
Closes #170
1 parent 025705b commit 402ff88

File tree

5 files changed

+41
-22
lines changed

5 files changed

+41
-22
lines changed

.gitignore

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -28,43 +28,25 @@ Makefile
2828
Makefile.in
2929
missing
3030
/curl_fuzzer_bufq
31-
/curl_fuzzer_bufq_seed_corpus.zip
3231
/curl_fuzzer_dict
33-
/curl_fuzzer_dict_seed_corpus.zip
3432
/curl_fuzzer_file
35-
/curl_fuzzer_file_seed_corpus.zip
3633
/curl_fuzzer_fnmatch
37-
/curl_fuzzer_fnmatch_seed_corpus.zip
3834
/curl_fuzzer_ftp
39-
/curl_fuzzer_ftp_seed_corpus.zip
4035
/curl_fuzzer_gopher
41-
/curl_fuzzer_gopher_seed_corpus.zip
4236
/curl_fuzzer_http
43-
/curl_fuzzer_http_seed_corpus.zip
4437
/curl_fuzzer_https
45-
/curl_fuzzer_https_seed_corpus.zip
4638
/curl_fuzzer_imap
47-
/curl_fuzzer_imap_seed_corpus.zip
4839
/curl_fuzzer_ldap
49-
/curl_fuzzer_ldap_seed_corpus.zip
5040
/curl_fuzzer_mqtt
51-
/curl_fuzzer_mqtt_seed_corpus.zip
5241
/curl_fuzzer_pop3
53-
/curl_fuzzer_pop3_seed_corpus.zip
5442
/curl_fuzzer_rtmp
55-
/curl_fuzzer_rtmp_seed_corpus.zip
5643
/curl_fuzzer_rtsp
57-
/curl_fuzzer_rtsp_seed_corpus.zip
5844
/curl_fuzzer_scp
59-
/curl_fuzzer_scp_seed_corpus.zip
6045
/curl_fuzzer_sftp
61-
/curl_fuzzer_sftp_seed_corpus.zip
6246
/curl_fuzzer_smb
63-
/curl_fuzzer_smb_seed_corpus.zip
6447
/curl_fuzzer_smtp
65-
/curl_fuzzer_smtp_seed_corpus.zip
6648
/curl_fuzzer_tftp
67-
/curl_fuzzer_tftp_seed_corpus.zip
49+
*_seed_corpus.zip
6850

6951
# Python
7052
.venv/

CMakeLists.txt

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,31 @@ else()
200200
set(GDB_DEP "")
201201
endif()
202202

203+
# Install OpenLDAP
204+
set(OPENLDAP_VERSION 2.6.10)
205+
set(OPENLDAP_URL https://www.openldap.org/software/download/OpenLDAP/openldap-release/openldap-${OPENLDAP_VERSION}.tgz)
206+
set(OPENLDAP_INSTALL_DIR ${CMAKE_BINARY_DIR}/openldap-install)
207+
208+
ExternalProject_Add(
209+
openldap_external
210+
URL ${OPENLDAP_URL}
211+
PREFIX ${CMAKE_BINARY_DIR}/openldap
212+
SOURCE_SUBDIR .
213+
CONFIGURE_COMMAND ./configure --prefix=${OPENLDAP_INSTALL_DIR} --disable-shared --enable-static --without-tls
214+
BUILD_COMMAND $(MAKE)
215+
INSTALL_COMMAND $(MAKE) install
216+
BUILD_IN_SOURCE 1
217+
DOWNLOAD_EXTRACT_TIMESTAMP TRUE
218+
)
219+
set(OPENLDAP_STATIC_LIB_LDAP ${OPENLDAP_INSTALL_DIR}/lib/libldap.a)
220+
set(OPENLDAP_STATIC_LIB_LBER ${OPENLDAP_INSTALL_DIR}/lib/liblber.a)
221+
222+
if (TARGET openssl_external)
223+
add_dependencies(openldap_external openssl_external)
224+
else()
225+
message(STATUS "Not building OpenLDAP with OpenSSL")
226+
endif()
227+
203228
# Group non-curl dependencies into a single target
204229
add_custom_target(deps
205230
DEPENDS
@@ -209,6 +234,7 @@ add_custom_target(deps
209234
zstd_external
210235
libidn2_external
211236
${GDB_DEP}
237+
openldap_external
212238
)
213239

214240
# Now for the main dependencies!
@@ -241,6 +267,9 @@ set(CURL_CONFIGURE_COMMAND
241267
--with-nghttp2=${NGHTTP2_INSTALL_DIR}
242268
--with-zstd=${ZSTD_INSTALL_DIR}
243269
--with-libidn2=${LIBIDN2_INSTALL_DIR}
270+
--with-ldap=${OPENLDAP_INSTALL_DIR}
271+
--with-ldap-lib=ldap
272+
--with-lber-lib=lber
244273
)
245274

246275
set(CURL_POST_INSTALL_COMMAND
@@ -288,6 +317,7 @@ set(CURL_DEPS
288317
zlib_external
289318
zstd_external
290319
libidn2_external
320+
openldap_external
291321
)
292322

293323
# Add dependencies for curl
@@ -337,6 +367,8 @@ set(COMMON_LINK_LIBS
337367
${ZLIB_STATIC_LIB}
338368
${ZSTD_STATIC_LIB}
339369
${LIBIDN2_STATIC_LIB}
370+
${OPENLDAP_STATIC_LIB_LDAP}
371+
${OPENLDAP_STATIC_LIB_LBER}
340372
${LIB_FUZZING_ENGINE}
341373
pthread
342374
m
@@ -365,6 +397,7 @@ add_curl_fuzzer(curl_fuzzer_gopher GOPHER)
365397
add_curl_fuzzer(curl_fuzzer_http HTTP)
366398
add_curl_fuzzer(curl_fuzzer_https HTTPS)
367399
add_curl_fuzzer(curl_fuzzer_imap IMAP)
400+
add_curl_fuzzer(curl_fuzzer_ldap LDAP)
368401
add_curl_fuzzer(curl_fuzzer_mqtt MQTT)
369402
add_curl_fuzzer(curl_fuzzer_pop3 POP3)
370403
add_curl_fuzzer(curl_fuzzer_rtsp RTSP)
@@ -408,6 +441,7 @@ add_custom_target(fuzz
408441
curl_fuzzer_http
409442
curl_fuzzer_https
410443
curl_fuzzer_imap
444+
curl_fuzzer_ldap
411445
curl_fuzzer_mqtt
412446
curl_fuzzer_pop3
413447
curl_fuzzer_rtsp
119 Bytes
Binary file not shown.

mainline.sh

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,15 @@ SCRIPTDIR=${BUILD_ROOT}/scripts
88

99
# Parse the options.
1010
OPTIND=1
11+
TARGET=fuzz
1112

12-
while getopts "c:" opt
13+
while getopts "c:t:" opt
1314
do
1415
case "$opt" in
1516
c) export CURL_SOURCE_DIR=$OPTARG
1617
;;
18+
t) TARGET=$OPTARG
19+
;;
1720
esac
1821
done
1922
shift $((OPTIND-1))
@@ -27,4 +30,4 @@ export CXXFLAGS="-fsanitize=address,fuzzer-no-link -stdlib=libstdc++ $FUZZ_FLAG"
2730
export CPPFLAGS="$FUZZ_FLAG"
2831
export OPENSSLFLAGS="-fno-sanitize=alignment -lstdc++"
2932

30-
${SCRIPTDIR}/compile_target.sh fuzz
33+
${SCRIPTDIR}/compile_target.sh ${TARGET}

scripts/fuzz_targets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
#!/bin/bash
22

3-
export FUZZ_TARGETS="curl_fuzzer_dict curl_fuzzer_file curl_fuzzer_ftp curl_fuzzer_gopher curl_fuzzer_http curl_fuzzer_https curl_fuzzer_imap curl_fuzzer_mqtt curl_fuzzer_pop3 curl_fuzzer_rtsp curl_fuzzer_smb curl_fuzzer_smtp curl_fuzzer_tftp curl_fuzzer_ws curl_fuzzer fuzz_url curl_fuzzer_bufq"
3+
export FUZZ_TARGETS="curl_fuzzer_dict curl_fuzzer_file curl_fuzzer_ftp curl_fuzzer_gopher curl_fuzzer_http curl_fuzzer_https curl_fuzzer_imap curl_fuzzer_ldap curl_fuzzer_mqtt curl_fuzzer_pop3 curl_fuzzer_rtsp curl_fuzzer_smb curl_fuzzer_smtp curl_fuzzer_tftp curl_fuzzer_ws curl_fuzzer fuzz_url curl_fuzzer_bufq"

0 commit comments

Comments
 (0)