droe / sslsplit

Transparent SSL/TLS interception
https://www.roe.ch/SSLsplit
BSD 2-Clause "Simplified" License
1.73k stars 327 forks source link

Musl build error: Undefined reference to [`fts_open, fts_read, fts_set, fts_close] #332

Closed anoduck closed 6 months ago

anoduck commented 8 months ago

Sslsplit is a required dependency of the Rogue AP toolkit. Unfortunately, Alpine Linux does not provide a sslsplit package, thus it had to be built.

The following packages were installed in order to allow building sslsplit:

abuild
gcc
build-base
musl-dev
musl-fts-dev
linux-headers
openssl-dev
openssl-libs-static
libevent-dev
libpcap-dev
libnet-dev
libnetfilter_conntrack-dev
libnetfilter_cthelper-dev

Makefile

The only modification to the make file was uncommenting the line to allow building against musl.

# Build against musl libc that needs an additional library for fts(3): % LIBS='-lfts' make

Versioning info

Uname doesn't really help, becuase sslsplit is being built on a dockerized image of alpine:edge.

uname-a: Linux ace90b7ccf1a 6.5.0-kali3-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.5.6-1kali1 (2023-10-09) x86_64 Linux

OpenSSL-Version: 3.1.4-r0 Libevent-Version: 2.1.12-r7

Build Output

Sending build context to Docker daemon  557.1kB
Sending build context to Docker daemon  1.239MB

Step 1/16 : FROM alpine:edge
 ---> 23d4cb6bdebe
Step 2/16 : LABEL name="rogue"
 ---> Using cache
 ---> 39789076cbbc
Step 3/16 : VOLUME [ "/opt/rogue" ]
 ---> Using cache
 ---> a52aa65b2175
Step 4/16 : RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
 ---> Using cache
 ---> 6acbb82e66a8
Step 5/16 : RUN apk upgrade && apk add python3    python3-dev    py3-pip    hostapd    abuild    gcc    build-base    musl-dev    musl-fts-dev    linux-headers    openssl-dev    openssl-libs-static    libevent-dev    libpcap-dev    libnet-dev    libnetfilter_conntrack-dev    libnetfilter_cthelper-dev    iptables    iptables-dev    iptables-legacy    wireless-tools    iw    net-tools    bash    bash-completion    git    freeradius    freeradius-utils    freeradius-dhcp    freeradius-python3    dhcp    responder
 ---> Using cache
 ---> aed007682a2e
Step 6/16 : RUN mkdir -p /root/Sandbox
 ---> Using cache
 ---> 250ada33a721
Step 7/16 : WORKDIR /root/Sandbox
 ---> Using cache
 ---> 025acfbaf5b4
Step 8/16 : RUN git clone https://github.com/droe/sslsplit
 ---> Using cache
 ---> 157a2b8be2c9
Step 9/16 : WORKDIR /root/Sandbox/sslsplit
 ---> Using cache
 ---> 23333a79065e
Step 10/16 : COPY makefile /root/Sandbox/sslsplit/makefile
 ---> Using cache
 ---> 3c748761aa12
Step 11/16 : RUN make && make install
 ---> Running in a40337e4b8c6
------------------------------------------------------------------------------
SSLsplit 0.5.5-38-gb2128fc
------------------------------------------------------------------------------
Report bugs at https://github.com/droe/sslsplit/issues/new
Please supply this header for diagnostics when reporting build issues
Before reporting bugs, make sure to try the latest develop branch first:
% git clone -b develop https://github.com/droe/sslsplit.git
------------------------------------------------------------------------------
Via pkg-config: openssl libevent libevent_openssl libevent_pthreads libpcap
LIBNET_BASE:    /usr
Build options:  -DHAVE_NETFILTER
Build info:     V:GIT
uname -a:       Linux a40337e4b8c6 6.5.0-kali3-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.5.6-1kali1 (2023-10-09) x86_64 Linux
------------------------------------------------------------------------------
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o base64.o base64.c
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -D"BUILD_PKGNAME=\"sslsplit\"" -D"BUILD_VERSION=\"0.5.5-38-gb2128fc\"" -D"BUILD_DATE=\"2023-10-28\"" -D"BUILD_INFO=\"V:GIT\"" -D"BUILD_FEATURES=\"-DHAVE_NETFILTER\"" -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o build.o build.c
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o cache.o cache.c
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o cachedsess.o cachedsess.c
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o cachefkcrt.o cachefkcrt.c
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o cachemgr.o cachemgr.c
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o cachessess.o cachessess.c
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o cachetgcrt.o cachetgcrt.c
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o cert.o cert.c
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o dynbuf.o dynbuf.c
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o log.o log.c
log.c:1690:46: warning: argument 3 of type 'int[5]' with mismatched bound [-Warray-parameter=]
 1690 | log_init(opts_t *opts, proxy_ctx_t *ctx, int clisock[5])
      |                                          ~~~~^~~~~~~~~~
In file included from log.c:29:
log.h:97:39: note: previously declared as 'int[3]'
   97 | int log_init(opts_t *, proxy_ctx_t *, int[3]) NONNULL(1,2) WUNRES;
      |                                       ^~~~~~
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o logbuf.o logbuf.c
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o logger.o logger.c
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o logpkt.o logpkt.c
logpkt.c: In function 'logpkt_pcap_build':
logpkt.c:367:17: warning: converting a packed 'ip4_hdr_t' pointer (alignment 1) to a 'uint16_t' {aka 'short unsigned int'} pointer (alignment 2) may result in an unaligned pointer value [-Waddress-of-packed-member]
  367 |                 CHKSUM_ADD_RANGE(sum, ip4_hdr, sizeof(ip4_hdr_t));
      |                 ^~~~~~~~~~~~~~~~
logpkt.c:81:9: note: defined here
   81 | typedef struct __attribute__((packed)) {
      |         ^~~~~~
logpkt.c:415:9: warning: converting a packed 'tcp_hdr_t' pointer (alignment 1) to a 'uint16_t' {aka 'short unsigned int'} pointer (alignment 2) may result in an unaligned pointer value [-Waddress-of-packed-member]
  415 |         CHKSUM_ADD_RANGE(sum, tcp_hdr, sizeof(tcp_hdr_t) + payloadlen);
      |         ^~~~~~~~~~~~~~~~
logpkt.c:103:9: note: defined here
  103 | typedef struct __attribute__((packed)) {
      |         ^~~~~~
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o main.o main.c
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o nat.o nat.c
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o opts.o opts.c
opts.c: In function 'opts_free':
opts.c:132:17: warning: 'DH_free' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
  132 |                 DH_free(opts->dh);
      |                 ^~~~~~~
In file included from /usr/include/openssl/dsa.h:31,
                 from /usr/include/openssl/x509.h:37,
                 from /usr/include/openssl/ssl.h:31,
                 from ssl.h:35,
                 from opts.h:34,
                 from opts.c:29:
/usr/include/openssl/dh.h:207:28: note: declared here
  207 | OSSL_DEPRECATEDIN_3_0 void DH_free(DH *dh);
      |                            ^~~~~~~
opts.c: In function 'opts_set_dh':
opts.c:778:17: warning: 'DH_free' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
  778 |                 DH_free(opts->dh);
      |                 ^~~~~~~
/usr/include/openssl/dh.h:207:28: note: declared here
  207 | OSSL_DEPRECATEDIN_3_0 void DH_free(DH *dh);
      |                            ^~~~~~~
opts.c: In function 'opts_set_ecdhcurve':
opts.c:807:9: warning: 'EC_KEY_free' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
  807 |         EC_KEY_free(ec);
      |         ^~~~~~~~~~~
In file included from /usr/include/openssl/x509.h:33:
/usr/include/openssl/ec.h:1006:28: note: declared here
 1006 | OSSL_DEPRECATEDIN_3_0 void EC_KEY_free(EC_KEY *key);
      |                            ^~~~~~~~~~~
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o privsep.o privsep.c
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o proc.o proc.c
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o proxy.o proxy.c
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o pxyconn.o pxyconn.c
pxyconn.c: In function 'pxy_srcsslctx_create':
pxyconn.c:816:17: warning: 'SSL_CTX_set_tmp_dh_callback' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
  816 |                 SSL_CTX_set_tmp_dh_callback(sslctx, ssl_tmp_dh_callback);
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ssl.h:35,
                 from opts.h:34,
                 from pxyconn.h:32,
                 from pxyconn.c:29:
/usr/include/openssl/ssl.h:2230:6: note: declared here
 2230 | void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx,
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
pxyconn.c:823:17: warning: 'EC_KEY_free' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
  823 |                 EC_KEY_free(ecdh);
      |                 ^~~~~~~~~~~
In file included from /usr/include/openssl/x509.h:33,
                 from /usr/include/openssl/ssl.h:31:
/usr/include/openssl/ec.h:1006:28: note: declared here
 1006 | OSSL_DEPRECATEDIN_3_0 void EC_KEY_free(EC_KEY *key);
      |                            ^~~~~~~~~~~
pxyconn.c:827:17: warning: 'EC_KEY_free' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
  827 |                 EC_KEY_free(ecdh);
      |                 ^~~~~~~~~~~
/usr/include/openssl/ec.h:1006:28: note: declared here
 1006 | OSSL_DEPRECATEDIN_3_0 void EC_KEY_free(EC_KEY *key);
      |                            ^~~~~~~~~~~
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o pxythrmgr.o pxythrmgr.c
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o ssl.o ssl.c
ssl.c: In function 'ssl_engine':
ssl.c:530:9: warning: 'ENGINE_by_id' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
  530 |         engine = ENGINE_by_id(name);
      |         ^~~~~~
In file included from ssl.c:44:
/usr/include/openssl/engine.h:336:31: note: declared here
  336 | OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_by_id(const char *id);
      |                               ^~~~~~~~~~~~
ssl.c:534:9: warning: 'ENGINE_set_default' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
  534 |         if (!ENGINE_set_default(engine, ENGINE_METHOD_ALL))
      |         ^~
/usr/include/openssl/engine.h:708:27: note: declared here
  708 | OSSL_DEPRECATEDIN_3_0 int ENGINE_set_default(ENGINE *e, unsigned int flags);
      |                           ^~~~~~~~~~~~~~~~~~
ssl.c: In function 'ssl_tmp_dh_callback':
ssl.c:738:9: warning: 'DH_new' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
  738 |         if (!(dh = DH_new())) {
      |         ^~
In file included from /usr/include/openssl/dsa.h:31,
                 from /usr/include/openssl/x509.h:37,
                 from /usr/include/openssl/ssl.h:31,
                 from ssl.h:35,
                 from ssl.c:29:
/usr/include/openssl/dh.h:206:27: note: declared here
  206 | OSSL_DEPRECATEDIN_3_0 DH *DH_new(void);
      |                           ^~~~~~
ssl.c:744:17: warning: 'DH_set0_pqg' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
  744 |                 rv = DH_set0_pqg(dh,
      |                 ^~
/usr/include/openssl/dh.h:262:27: note: declared here
  262 | OSSL_DEPRECATEDIN_3_0 int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g);
      |                           ^~~~~~~~~~~
ssl.c:750:17: warning: 'DH_set0_pqg' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
  750 |                 rv = DH_set0_pqg(dh,
      |                 ^~
/usr/include/openssl/dh.h:262:27: note: declared here
  262 | OSSL_DEPRECATEDIN_3_0 int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g);
      |                           ^~~~~~~~~~~
ssl.c:756:17: warning: 'DH_set0_pqg' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
  756 |                 rv = DH_set0_pqg(dh,
      |                 ^~
/usr/include/openssl/dh.h:262:27: note: declared here
  262 | OSSL_DEPRECATEDIN_3_0 int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g);
      |                           ^~~~~~~~~~~
ssl.c:762:17: warning: 'DH_set0_pqg' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
  762 |                 rv = DH_set0_pqg(dh,
      |                 ^~
/usr/include/openssl/dh.h:262:27: note: declared here
  262 | OSSL_DEPRECATEDIN_3_0 int DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g);
      |                           ^~~~~~~~~~~
ssl.c:771:17: warning: 'DH_free' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
  771 |                 DH_free(dh);
      |                 ^~~~~~~
/usr/include/openssl/dh.h:207:28: note: declared here
  207 | OSSL_DEPRECATEDIN_3_0 void DH_free(DH *dh);
      |                            ^~~~~~~
ssl.c:776:17: warning: 'DH_free' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
  776 |                 DH_free(dh);
      |                 ^~~~~~~
/usr/include/openssl/dh.h:207:28: note: declared here
  207 | OSSL_DEPRECATEDIN_3_0 void DH_free(DH *dh);
      |                            ^~~~~~~
ssl.c: In function 'ssl_dh_load':
ssl.c:798:9: warning: 'PEM_read_DHparams' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
  798 |         dh = PEM_read_DHparams(fh, NULL, NULL, NULL);
      |         ^~
In file included from /usr/include/openssl/ssl.h:36:
/usr/include/openssl/pem.h:472:1: note: declared here
  472 | DECLARE_PEM_rw_attr(OSSL_DEPRECATEDIN_3_0, DHparams, DH)
      | ^~~~~~~~~~~~~~~~~~~
ssl.c: In function 'ssl_ec_by_name':
ssl.c:820:9: warning: 'EC_KEY_new_by_curve_name' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
  820 |         return EC_KEY_new_by_curve_name(nid);
      |         ^~~~~~
In file included from /usr/include/openssl/x509.h:33:
/usr/include/openssl/ec.h:1001:31: note: declared here
 1001 | OSSL_DEPRECATEDIN_3_0 EC_KEY *EC_KEY_new_by_curve_name(int nid);
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~
ssl.c: In function 'ssl_key_genrsa':
ssl.c:1370:9: warning: 'RSA_new' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
 1370 |         rsa = RSA_new();
      |         ^~~
In file included from /usr/include/openssl/x509.h:36:
/usr/include/openssl/rsa.h:207:28: note: declared here
  207 | OSSL_DEPRECATEDIN_3_0 RSA *RSA_new(void);
      |                            ^~~~~~~
ssl.c:1373:9: warning: 'RSA_generate_key_ex' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
 1373 |         rv = RSA_generate_key_ex(rsa, keysize, bn, NULL);
      |         ^~
/usr/include/openssl/rsa.h:266:27: note: declared here
  266 | OSSL_DEPRECATEDIN_3_0 int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e,
      |                           ^~~~~~~~~~~~~~~~~~~
ssl.c:1376:17: warning: 'RSA_free' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
 1376 |                 RSA_free(rsa);
      |                 ^~~~~~~~
/usr/include/openssl/rsa.h:299:28: note: declared here
  299 | OSSL_DEPRECATEDIN_3_0 void RSA_free(RSA *r);
      |                            ^~~~~~~~
ssl.c:1385:9: warning: 'EVP_PKEY_assign' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
 1385 |         EVP_PKEY_assign_RSA(pkey, rsa); /* does not increment refcount */
      |         ^~~~~~~~~~~~~~~~~~~
In file included from /usr/include/openssl/x509.h:29:
/usr/include/openssl/evp.h:1333:5: note: declared here
 1333 | int EVP_PKEY_assign(EVP_PKEY *pkey, int type, void *key);
      |     ^~~~~~~~~~~~~~~
ssl.c: In function 'ssl_dh_refcount_inc':
ssl.c:1506:9: warning: 'DH_up_ref' is deprecated: Since OpenSSL 3.0 [-Wdeprecated-declarations]
 1506 |         DH_up_ref(dh);
      |         ^~~~~~~~~
/usr/include/openssl/dh.h:208:27: note: declared here
  208 | OSSL_DEPRECATEDIN_3_0 int DH_up_ref(DH *dh);
      |                           ^~~~~~~~~
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o sys.o sys.c
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o thrqueue.o thrqueue.c
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o url.o url.c
cc -c -isystem/usr/include  -D_GNU_SOURCE -D"PKGLABEL=\"SSLsplit\"" -DHAVE_NETFILTER -g  -std=c99 -Wall -Wextra -pedantic -D_FORTIFY_SOURCE=2 -fstack-protector-all -pthread -O -o util.o util.c
cc -L/usr/lib  -pthread -o sslsplit base64.o build.o cache.o cachedsess.o cachefkcrt.o cachemgr.o cachessess.o cachetgcrt.o cert.o dynbuf.o log.o logbuf.o logger.o logpkt.o main.o nat.o opts.o privsep.o proc.o proxy.o pxyconn.o pxythrmgr.o ssl.o sys.o thrqueue.o url.o util.o -lnet -lssl -lcrypto -levent_openssl -levent_pthreads -levent -lpcap
/usr/lib/gcc/x86_64-alpine-linux-musl/13.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: sys.o: in function `sys_dir_eachfile':
/root/Sandbox/sslsplit/sys.c:698:(.text+0x1192): undefined reference to `fts_open'
/usr/lib/gcc/x86_64-alpine-linux-musl/13.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: /root/Sandbox/sslsplit/sys.c:708:(.text+0x11d9): undefined reference to `fts_set'
/usr/lib/gcc/x86_64-alpine-linux-musl/13.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: /root/Sandbox/sslsplit/sys.c:706:(.text+0x11e1): undefined reference to `fts_read'
/usr/lib/gcc/x86_64-alpine-linux-musl/13.2.1/../../../../x86_64-alpine-linux-musl/bin/ld: /root/Sandbox/sslsplit/sys.c:723:(.text+0x121e): undefined reference to `fts_close'
collect2: error: ld returned 1 exit status
make: *** [GNUmakefile:481: sslsplit] Error 1
The command '/bin/sh -c make && make install' returned a non-zero code: 2

Resolution is not critical. Please let me know if there is anything I can do to assisst.