knsupdate, memory leak on TCP connection failure
knsupdate leaks some memory when the server is not available and TCP protocol is used for connection.
$ cat update.txt
server ::1 53002
key hmac-sha256 key0 Wg==
zone test.com.
update delete random.test.com. TXT
update add random.test.com. 60 TXT "19186"
show
send
$ knsupdate --version
knsupdate, version 2.0.1
$ knsupdate -v ./update.txt
Update query:
;; ->>HEADER<<- opcode: UPDATE; status: NOERROR; id: 23677
;; Flags: ; ZONE: 1; PREREQ: 0; UPDATE: 2; ADDITIONAL: 0
;; ZONE SECTION:
;; test.com. IN SOA
;; UPDATE SECTION:
random.test.com. 0 ANY TXT
random.test.com. 60 IN TXT "19186"
; Warning: can't connect to ::1@53002(TCP)
=================================================================
==25484==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 76 byte(s) in 1 object(s) allocated from:
#0 0x4a01bb in __interceptor_malloc (/home/fcelda/devel/knot/src/knsupdate+0x4a01bb)
#1 0x7effc556c759 in gaih_inet (/lib64/libc.so.6+0xe7759)
#2 0x7effc5570275 in __GI_getaddrinfo (/lib64/libc.so.6+0xeb275)
#3 0x452e10 in __interceptor_getaddrinfo (/home/fcelda/devel/knot/src/knsupdate+0x452e10)
#4 0x51a37a in get_addr /home/fcelda/devel/knot/src/utils/common/netio.c:127:6
#5 0x519628 in net_init /home/fcelda/devel/knot/src/utils/common/netio.c:176:6
#6 0x4cd98e in pkt_sendrecv /home/fcelda/devel/knot/src/utils/knsupdate/knsupdate_exec.c:429:8
#7 0x4c3541 in cmd_send /home/fcelda/devel/knot/src/utils/knsupdate/knsupdate_exec.c:844:8
#8 0x4d0c04 in process_line /home/fcelda/devel/knot/src/utils/knsupdate/knsupdate_exec.c:488:8
#9 0x4c82c7 in process_lines /home/fcelda/devel/knot/src/utils/knsupdate/knsupdate_exec.c:514:18
#10 0x4c7972 in knsupdate_exec /home/fcelda/devel/knot/src/utils/knsupdate/knsupdate_exec.c:576:9
#11 0x4d12d1 in main /home/fcelda/devel/knot/src/utils/knsupdate/knsupdate_main.c:33:8
#12 0x7effc54a56ff in __libc_start_main (/lib64/libc.so.6+0x206ff)
Direct leak of 15 byte(s) in 1 object(s) allocated from:
#0 0x4a01bb in __interceptor_malloc (/home/fcelda/devel/knot/src/knsupdate+0x4a01bb)
#1 0x518c0e in get_addr_str /home/fcelda/devel/knot/src/utils/common/netio.c:151:9
#2 0x51aab0 in net_connect /home/fcelda/devel/knot/src/utils/common/netio.c:211:2
#3 0x4cda7d in pkt_sendrecv /home/fcelda/devel/knot/src/utils/knsupdate/knsupdate_exec.c:439:8
#4 0x4c3541 in cmd_send /home/fcelda/devel/knot/src/utils/knsupdate/knsupdate_exec.c:844:8
#5 0x4d0c04 in process_line /home/fcelda/devel/knot/src/utils/knsupdate/knsupdate_exec.c:488:8
#6 0x4c82c7 in process_lines /home/fcelda/devel/knot/src/utils/knsupdate/knsupdate_exec.c:514:18
#7 0x4c7972 in knsupdate_exec /home/fcelda/devel/knot/src/utils/knsupdate/knsupdate_exec.c:576:9
#8 0x4d12d1 in main /home/fcelda/devel/knot/src/utils/knsupdate/knsupdate_main.c:33:8
#9 0x7effc54a56ff in __libc_start_main (/lib64/libc.so.6+0x206ff)
SUMMARY: AddressSanitizer: 91 byte(s) leaked in 2 allocation(s).