No memory leakage, if I comment out all SSL related constructs from my code. Thus, the SSL related code parts seem to be the cause of this leak. What is the issue here? Makefile:
CC=clang CFLAGS=-g -Wextra -Wall -Werror -pedantic -std=c89 -lssl -fsanitize=address -fno-omit-frame-pointer .PHONY: clean test: main.c $(CC) $(CFLAGS) $^ -o $@ clean: rm -rf test Code: #define _DEFAULT_SOURCE #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <netdb.h> #include <arpa/inet.h> #include <unistd.h> #include <assert.h> #include <string.h> #include <stdlib.h> #include <stdio.h> #include <openssl/ssl.h> int main(int argc, char **argv) { int sfd = 0; int ret = 0; struct addrinfo *result = NULL; struct addrinfo *rp = NULL; SSL_CTX *ssl_ctx = NULL; SSL *ssl = NULL; /* Socket initialization and connection */ sfd = socket(AF_INET, SOCK_STREAM, 0); assert(sfd != -1); { const unsigned int min_argc = 4; assert(argc == min_argc); } ret = getaddrinfo(argv[1], argv[2], NULL, &result); assert(ret != -1); for (rp = result; rp != NULL; rp = rp->ai_next) { if (connect(sfd, rp->ai_addr, rp->ai_addrlen) != -1) break; } /* SSL initialization */ SSL_load_error_strings(); SSL_library_init(); ssl_ctx = SSL_CTX_new(SSLv23_client_method()); ssl = SSL_new(ssl_ctx); SSL_set_fd(ssl, sfd); ret = SSL_connect(ssl); assert(ret != -1); /* HTTP requests */ { const size_t buf_sz = atoi(argv[3]); const unsigned int max = 30; char *buf = (char *)calloc(buf_sz + 1, sizeof(char)); strncat(buf, "GET / HTTP/1.1\r\nHost: ", max); strncat(buf, argv[1], max); strncat(buf, "\r\n\r\n", max); ret = SSL_write(ssl, buf, strlen(buf) + 1); assert(ret != -1); free(buf); } { const size_t buf_sz = atoi(argv[3]); char *buf = (char *)calloc(buf_sz + 1, sizeof(char)); assert(buf); ret = SSL_read(ssl, buf, buf_sz); assert(ret != -1); printf("%s\n", buf); free(buf); } /* Clean up */ SSL_free(ssl); close(sfd); return 0; } Program output: user@user-ubuntu:~/projects/https$ ./test finance.yahoo.com 443 1024 HTTP/1.1 200 OK Referrer-Policy: no-referrer-when-downgrade Strict-Transport-Security: max-age=15552000 X-Frame-Options: SAMEORIGIN Content-Security-Policy: sandbox allow-downloads allow-forms allow-modals allow-same-origin allow-scripts allow-popups allow-popups-to-escape-sandbox allow-top-navigation-by-user-activation allow-presentation; Content-Type: text/html; charset=utf-8 Set-Cookie: B=8mraj0lfhbaol&b=3&s=r7; expires=Mon, 20-Jul-2021 14:32:53 GMT; path=/; domain=.yahoo.com Date: Mon, 20 Jul 2020 14:32:53 GMT Server: ATS Cache-Control: max-age=0, private Expires: -1 Age: 0 Transfer-Encoding: chunked Connection: keep-alive Expect-CT: max-age=31536000, report-uri="http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only" X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff ================================================================= ==28089==ERROR: LeakSanitizer: detected memory leaks Direct leak of 1024 byte(s) in 1 object(s) allocated from: #0 0x493aed in malloc (/home/user/projects/https/test+0x493aed) #1 0x7f59b7cf88cd in CRYPTO_zalloc (/lib/x86_64-linux-gnu/libcrypto.so.1.1+0x17b8cd) #2 0x7f59b7e7a0b2 in __libc_start_main /build/glibc-YYA7BZ/glibc-2.31/csu/../csu/libc-start.c:308:16 Direct leak of 64 byte(s) in 1 object(s) allocated from: #0 0x493aed in malloc (/home/user/projects/https/test+0x493aed) #1 0x7f59b7f59be9 in gaih_inet /build/glibc-YYA7BZ/glibc-2.31/posix/../sysdeps/posix/getaddrinfo.c:1058:18 #2 0x7f59b7f5bf48 in getaddrinfo /build/glibc-YYA7BZ/glibc-2.31/posix/../sysdeps/posix/getaddrinfo.c:2256:12 #3 0x442e3a in getaddrinfo (/home/user/projects/https/test+0x442e3a) #4 0x4c349c in main /home/user/projects/https/main.c:30:11 #5 0x7f59b7e7a0b2 in __libc_start_main /build/glibc-YYA7BZ/glibc-2.31/csu/../csu/libc-start.c:308:16 Indirect leak of 1712 byte(s) in 19 object(s) allocated from: #0 0x493aed in malloc (/home/user/projects/https/test+0x493aed) #1 0x7f59b7cf88cd in CRYPTO_zalloc (/lib/x86_64-linux-gnu/libcrypto.so.1.1+0x17b8cd) Indirect leak of 504 byte(s) in 1 object(s) allocated from: #0 0x493e09 in realloc (/home/user/projects/https/test+0x493e09) #1 0x7f59b7d5b464 (/lib/x86_64-linux-gnu/libcrypto.so.1.1+0x1de464) Indirect leak of 504 byte(s) in 1 object(s) allocated from: #0 0x493aed in malloc (/home/user/projects/https/test+0x493aed) #1 0x7f59b7d5ba48 in OPENSSL_sk_dup (/lib/x86_64-linux-gnu/libcrypto.so.1.1+0x1dea48) Indirect leak of 456 byte(s) in 6 object(s) allocated from: #0 0x493aed in malloc (/home/user/projects/https/test+0x493aed) #1 0x7f59b7f59a59 in gaih_inet /build/glibc-YYA7BZ/glibc-2.31/posix/../sysdeps/posix/getaddrinfo.c:1058:18 #2 0x7f59b7f5bf48 in getaddrinfo /build/glibc-YYA7BZ/glibc-2.31/posix/../sysdeps/posix/getaddrinfo.c:2256:12 #3 0x442e3a in getaddrinfo (/home/user/projects/https/test+0x442e3a) #4 0x4c349c in main /home/user/projects/https/main.c:30:11 #5 0x7f59b7e7a0b2 in __libc_start_main /build/glibc-YYA7BZ/glibc-2.31/csu/../csu/libc-start.c:308:16 Indirect leak of 320 byte(s) in 5 object(s) allocated from: #0 0x493aed in malloc (/home/user/projects/https/test+0x493aed) #1 0x7f59b7f59be9 in gaih_inet /build/glibc-YYA7BZ/glibc-2.31/posix/../sysdeps/posix/getaddrinfo.c:1058:18 #2 0x7f59b7f5bf48 in getaddrinfo /build/glibc-YYA7BZ/glibc-2.31/posix/../sysdeps/posix/getaddrinfo.c:2256:12 #3 0x442e3a in getaddrinfo (/home/user/projects/https/test+0x442e3a) #4 0x4c349c in main /home/user/projects/https/main.c:30:11 #5 0x7f59b7e7a0b2 in __libc_start_main /build/glibc-YYA7BZ/glibc-2.31/csu/../csu/libc-start.c:308:16 Indirect leak of 32 byte(s) in 1 object(s) allocated from: #0 0x493aed in malloc (/home/user/projects/https/test+0x493aed) #1 0x7f59b7d5b9f3 in OPENSSL_sk_dup (/lib/x86_64-linux-gnu/libcrypto.so.1.1+0x1de9f3) SUMMARY: AddressSanitizer: 4616 byte(s) leaked in 35 allocation(s).