libpostal
libpostal copied to clipboard
fix memory leak in setup when datadir is invalid or setup failed
I found this leak when passing an invalid datadir to setup. I'm running on 1.0.0 but it seems this issue still exists on master:
ERR Error loading transliteration module, dir=/fake/datadir/transliteration/transliteration.dat
at libpostal_setup_datadir (libpostal.c:1047) errno: No such file or directory
WARNING: Logging before InitGoogleLogging() is written to STDERR
ERR parser is not setup, call libpostal_setup_address_parser()
at address_parser_parse (address_parser.c:1659) errno: No such file or directory
ERR Parser returned NULL
at libpostal_parse_address (libpostal.c:1027) errno: No such file or directory
=================================================================
==4194251==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 128 byte(s) in 1 object(s) allocated from:
#0 0x4f7e90 in realloc (/data/users/jdedward/libpostal_wrapper_test+0x4f7e90)
#1 0x7f3c6803b929 in char_array_push /home/libpostal/1.0.0/src/libpostal-1.0.0/src/collections.h:50
#2 0x7f3c6803b929 in char_array_append_len /home/libpostal/1.0.0/src/libpostal-1.0.0/src/string_utils.c:673
#3 0x7f3c6803b929 in char_array_add_vjoined /home/libpostal/1.0.0/src/libpostal-1.0.0/src/string_utils.c:757
#4 0x7f3c6803db58 in path_vjoin /home/libpostal/1.0.0/src/libpostal-1.0.0/src/file_utils.c:49
#5 0x7f3c6803dc0a in path_join /home/libpostal/1.0.0/src/libpostal-1.0.0/src/file_utils.c:56
#6 0x7f3c6802a393 in libpostal_setup_datadir /home/libpostal/1.0.0/src/libpostal-1.0.0/src/libpostal.c:1042
...
Direct leak of 128 byte(s) in 1 object(s) allocated from:
#0 0x4f7e90 in realloc (/data/users/jdedward/libpostal_wrapper_test+0x4f7e90)
#1 0x7f3c6803b929 in char_array_push /home/libpostal/1.0.0/src/libpostal-1.0.0/src/collections.h:50
#2 0x7f3c6803b929 in char_array_append_len /home/libpostal/1.0.0/src/libpostal-1.0.0/src/string_utils.c:673
#3 0x7f3c6803b929 in char_array_add_vjoined /home/libpostal/1.0.0/src/libpostal-1.0.0/src/string_utils.c:757
#4 0x7f3c6803db58 in path_vjoin /home/libpostal/1.0.0/src/libpostal-1.0.0/src/file_utils.c:49
#5 0x7f3c6803dc0a in path_join /home/libpostal/1.0.0/src/libpostal-1.0.0/src/file_utils.c:56
#6 0x7f3c6802a3b3 in libpostal_setup_datadir /home/libpostal/1.0.0/src/libpostal-1.0.0/src/libpostal.c:1043
...
Direct leak of 128 byte(s) in 1 object(s) allocated from:
#0 0x4f7e90 in realloc (/data/users/jdedward/libpostal_wrapper_test+0x4f7e90)
#1 0x7f3c6803b929 in char_array_push /home/libpostal/1.0.0/src/libpostal-1.0.0/src/collections.h:50
#2 0x7f3c6803b929 in char_array_append_len /home/libpostal/1.0.0/src/libpostal-1.0.0/src/string_utils.c:673
#3 0x7f3c6803b929 in char_array_add_vjoined /home/libpostal/1.0.0/src/libpostal-1.0.0/src/string_utils.c:757
#4 0x7f3c6803db58 in path_vjoin /home/libpostal/1.0.0/src/libpostal-1.0.0/src/file_utils.c:49
#5 0x7f3c6803dc0a in path_join /home/libpostal/1.0.0/src/libpostal-1.0.0/src/file_utils.c:56
#6 0x7f3c6802a373 in libpostal_setup_datadir /home/libpostal/1.0.0/src/libpostal-1.0.0/src/libpostal.c:1041
...
LGTM