From: Yu Watanabe Date: Tue, 18 Feb 2025 15:59:50 +0000 (+0900) Subject: journal-remote: fix memleak X-Git-Tag: v258-rc1~1310^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=54258df8296b28ea889cc789954b62c96d97dc36;p=thirdparty%2Fsystemd.git journal-remote: fix memleak Fixes a bug introduced by cfaf78001c3451d549bcb1ee4adca3e85b934e56. Fixes CID#1591182. --- diff --git a/src/journal-remote/journal-remote-main.c b/src/journal-remote/journal-remote-main.c index e8813241382..6a47c994937 100644 --- a/src/journal-remote/journal-remote-main.c +++ b/src/journal-remote/journal-remote-main.c @@ -186,24 +186,22 @@ static int build_accept_encoding(char **ret) { } static int request_meta(void **connection_cls, int fd, char *hostname) { - RemoteSource *source; - Writer *writer; int r; assert(connection_cls); + if (*connection_cls) - return 0; + return 0; /* already assigned. */ + Writer *writer; r = journal_remote_get_writer(journal_remote_server_global, hostname, &writer); if (r < 0) return log_warning_errno(r, "Failed to get writer for source %s: %m", hostname); - source = source_new(fd, true, hostname, writer); - if (!source) { - writer_unref(writer); + _cleanup_(source_freep) RemoteSource *source = source_new(fd, true, hostname, writer); + if (!source) return log_oom(); - } log_debug("Added RemoteSource as connection metadata %p", source); @@ -212,7 +210,7 @@ static int request_meta(void **connection_cls, int fd, char *hostname) { return log_oom(); source->compression = COMPRESSION_NONE; - *connection_cls = source; + *connection_cls = TAKE_PTR(source); return 0; }