chiark / gitweb /
journal-remote: fix certificate status memory leak
[elogind.git] / src / journal-remote / microhttpd-util.c
index 3df34b2323f39b5438e287f08cf1cbff248997cf..de9c6ab32d124be9e3c2314c8495a3a09d7675de 100644 (file)
@@ -38,7 +38,7 @@
 void microhttpd_logger(void *arg, const char *fmt, va_list ap) {
         char *f;
 
-        f = strappenda("microhttpd: ", fmt);
+        f = strjoina("microhttpd: ", fmt);
 
         DISABLE_WARNING_FORMAT_NONLITERAL;
         log_internalv(LOG_INFO, 0, NULL, 0, NULL, f, ap);
@@ -170,19 +170,16 @@ static int verify_cert_authorized(gnutls_session_t session) {
         int r;
 
         r = gnutls_certificate_verify_peers2(session, &status);
-        if (r < 0) {
-                log_error_errno(-r, "gnutls_certificate_verify_peers2 failed: %m");
-                return r;
-        }
+        if (r < 0)
+                return log_error_errno(r, "gnutls_certificate_verify_peers2 failed: %m");
 
         type = gnutls_certificate_type_get(session);
         r = gnutls_certificate_verification_status_print(status, type, &out, 0);
-        if (r < 0) {
-                log_error_errno(-r, "gnutls_certificate_verification_status_print failed: %m");
-                return r;
-        }
+        if (r < 0)
+                return log_error_errno(r, "gnutls_certificate_verification_status_print failed: %m");
 
         log_info("Certificate status: %s", out.data);
+        gnutls_free(out.data);
 
         return status == 0 ? 0 : -EPERM;
 }