diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2014-03-17 22:13:47 -0400 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2014-03-18 00:03:14 -0400 |
commit | 4dd5da7f7d37f964fe95b0f0d451d7843a34591d (patch) | |
tree | 1be85ebc78934510176bb6beb322e5fc013b23a9 | |
parent | 9786767a36803f6a27870e6f2a666113565e19d2 (diff) |
microhttpd-util: avoid double free on error
It seems that resources are properly deallocated by MHD_destroy_response,
even if enqueuing the request fails.
Also replace a trivial printf with alloca and fixup log message
(it'll now be something like "Connection from CN=some.host.name",
which seems clear enough.)
-rw-r--r-- | src/journal/microhttpd-util.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/src/journal/microhttpd-util.c b/src/journal/microhttpd-util.c index 250be93dbe..f693e0f10d 100644 --- a/src/journal/microhttpd-util.c +++ b/src/journal/microhttpd-util.c @@ -35,12 +35,9 @@ #endif void microhttpd_logger(void *arg, const char *fmt, va_list ap) { - _cleanup_free_ char *f = NULL; + char *f; - if (asprintf(&f, "microhttpd: %s", fmt) <= 0) { - log_oom(); - return; - } + f = strappenda("microhttpd: ", fmt); DISABLE_WARNING_FORMAT_NONLITERAL; log_metav(LOG_INFO, NULL, 0, NULL, f, ap); @@ -101,10 +98,7 @@ int mhd_respondf(struct MHD_Connection *connection, if (r < 0) return respond_oom(connection); - r = mhd_respond_internal(connection, code, m, r, MHD_RESPMEM_MUST_FREE); - if (r == MHD_NO) - free(m); - return r; + return mhd_respond_internal(connection, code, m, r, MHD_RESPMEM_MUST_FREE); } #ifdef HAVE_GNUTLS @@ -256,7 +250,7 @@ int check_permissions(struct MHD_Connection *connection, int *code) { return -EPERM; } - log_info("Connection from DN %s", buf); + log_info("Connection from %s", buf); r = verify_cert_authorized(session); if (r < 0) { |