]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-http: server: Fixed datastack framing problem in error handling of response sending.
authorStephan Bosch <stephan@rename-it.nl>
Mon, 8 Feb 2016 21:51:14 +0000 (22:51 +0100)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Wed, 10 Feb 2016 11:55:26 +0000 (13:55 +0200)
The returned error string crossed a data stack frame, which wasn't handled correctly.

src/lib-http/http-server-response.c

index 0ad0a8aad64319d0b8663fa3f4471f2e23cf9f55..3fb70031011a7ce1c0929ae6140e40d5d83c154b 100644 (file)
@@ -418,10 +418,15 @@ static int http_server_response_send_real(struct http_server_response *resp,
 int http_server_response_send(struct http_server_response *resp,
                             const char **error_r)
 {
+       char *errstr = NULL;
        int ret;
 
        T_BEGIN {
                ret = http_server_response_send_real(resp, error_r);
+               if (ret < 0)
+                       errstr = i_strdup(*error_r);
        } T_END;
+       *error_r = t_strdup(errstr);
+       i_free(errstr);
        return ret;
 }