[systemd-devel] [PATCH] timedate: fix memory leak in timedated

Lennart Poettering lennart at poettering.net
Fri May 15 11:01:02 PDT 2015


On Fri, 15.05.15 13:26, Cristian Rodríguez (crrodriguez at opensuse.org) wrote:

Thanks!

Applied!

> $ /usr/lib/systemd/systemd-timedated (wait until auto-exit)
> 
> =================================================================
> ==396==ERROR: LeakSanitizer: detected memory leaks
> 
> Direct leak of 928 byte(s) in 1 object(s) allocated from:
>     #0 0x7f782f788db1 in __interceptor_calloc (/usr/lib64/libasan.so.2+0x96db1)
>     #1 0x562a83ae60cf in bus_message_from_header src/libsystemd/sd-bus/bus-message.c:480
>     #2 0x562a83ae6f5a in bus_message_from_malloc src/libsystemd/sd-bus/bus-message.c:576
>     #3 0x562a83ad3cad in bus_socket_make_message src/libsystemd/sd-bus/bus-socket.c:915
>     #4 0x562a83ad4cfc in bus_socket_read_message src/libsystemd/sd-bus/bus-socket.c:1051
>     #5 0x562a83ab733f in bus_read_message src/libsystemd/sd-bus/sd-bus.c:1647
>     #6 0x562a83ab98ea in sd_bus_call src/libsystemd/sd-bus/sd-bus.c:2038
>     #7 0x562a83b1f46d in sd_bus_call_method src/libsystemd/sd-bus/bus-convenience.c:94
>     #8 0x562a83aab3e1 in context_read_ntp src/timedate/timedated.c:192
>     #9 0x562a83aae1af in main src/timedate/timedated.c:730
>     #10 0x7f782eb238c4 in __libc_start_main (/lib64/libc.so.6+0x208c4)
> 
> Indirect leak of 77 byte(s) in 1 object(s) allocated from:
>     #0 0x7f782f788f6a in realloc (/usr/lib64/libasan.so.2+0x96f6a)
>     #1 0x562a83ad418a in bus_socket_read_message src/libsystemd/sd-bus/bus-socket.c:963
>     #2 0x562a83ab733f in bus_read_message src/libsystemd/sd-bus/sd-bus.c:1647
>     #3 0x562a83ab98ea in sd_bus_call src/libsystemd/sd-bus/sd-bus.c:2038
>     #4 0x562a83b1f46d in sd_bus_call_method src/libsystemd/sd-bus/bus-convenience.c:94
>     #5 0x562a83aab3e1 in context_read_ntp src/timedate/timedated.c:192
>     #6 0x562a83aae1af in main src/timedate/timedated.c:730
>     #7 0x7f782eb238c4 in __libc_start_main (/lib64/libc.so.6+0x208c4)
> 
> Indirect leak of 2 byte(s) in 1 object(s) allocated from:
>     #0 0x7f782f75493f in strdup (/usr/lib64/libasan.so.2+0x6293f)
>     #1 0x562a83b0229b in bus_message_parse_fields src/libsystemd/sd-bus/bus-message.c:5382
>     #2 0x562a83ae7290 in bus_message_from_malloc src/libsystemd/sd-bus/bus-message.c:601
>     #3 0x562a83ad3cad in bus_socket_make_message src/libsystemd/sd-bus/bus-socket.c:915
>     #4 0x562a83ad4cfc in bus_socket_read_message src/libsystemd/sd-bus/bus-socket.c:1051
>     #5 0x562a83ab733f in bus_read_message src/libsystemd/sd-bus/sd-bus.c:1647
>     #6 0x562a83ab98ea in sd_bus_call src/libsystemd/sd-bus/sd-bus.c:2038
>     #7 0x562a83b1f46d in sd_bus_call_method src/libsystemd/sd-bus/bus-convenience.c:94
>     #8 0x562a83aab3e1 in context_read_ntp src/timedate/timedated.c:192
>     #9 0x562a83aae1af in main src/timedate/timedated.c:730
>     #10 0x7f782eb238c4 in __libc_start_main (/lib64/libc.so.6+0x208c4)
> 
> SUMMARY: AddressSanitizer: 1007 byte(s) leaked in 3 allocation(s).
> 
> This is due to missing  _cleanup_bus_message_unref_ in context_read_ntp()
> ---
>  src/timedate/timedated.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c
> index c5ebb4a..4e8ae94 100644
> --- a/src/timedate/timedated.c
> +++ b/src/timedate/timedated.c
> @@ -182,7 +182,7 @@ static int context_write_data_local_rtc(Context *c) {
>  
>  static int context_read_ntp(Context *c, sd_bus *bus) {
>          _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
> -        sd_bus_message *reply = NULL;
> +        _cleanup_bus_message_unref_ sd_bus_message *reply = NULL;
>          const char *s;
>          int r;
>  
> -- 
> 2.3.7
> 
> _______________________________________________
> systemd-devel mailing list
> systemd-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/systemd-devel


Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list