fix memory leaks
authorSergey Borshch <sb-sf@users.sourceforge.net>
Wed, 19 Sep 2012 07:07:36 +0000 (10:07 +0300)
committerSpencer Oliver <spen@spen-soft.co.uk>
Wed, 31 Oct 2012 10:24:08 +0000 (10:24 +0000)
if add_connection() fails, memory allocated in copy_command_context() is lost.

Signed-off-by: Sergey Borshch <sb-sf@users.sourceforge.net>
Change-Id: I91a2757f29612038031eb8953100faa3b850d3a6
Reviewed-on: http://openocd.zylin.com/836
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
src/server/server.c

index 96f06b3feff65095bde1d1697a1c85b8ca806b55..1499e73875b94612c0bac5ffc5520d5c2038a231 100644 (file)
@@ -85,6 +85,7 @@ static int add_connection(struct service *service, struct command_context *cmd_c
                if (retval != ERROR_OK) {
                        close_socket(c->fd);
                        LOG_ERROR("attempted '%s' connection rejected", service->name);
+                       command_done(c->cmd_ctx);
                        free(c);
                        return retval;
                }
@@ -104,6 +105,7 @@ static int add_connection(struct service *service, struct command_context *cmd_c
                retval = service->new_connection(c);
                if (retval != ERROR_OK) {
                        LOG_ERROR("attempted '%s' connection rejected", service->name);
+                       command_done(c->cmd_ctx);
                        free(c);
                        return retval;
                }
@@ -124,6 +126,7 @@ static int add_connection(struct service *service, struct command_context *cmd_c
                retval = service->new_connection(c);
                if (retval != ERROR_OK) {
                        LOG_ERROR("attempted '%s' connection rejected", service->name);
+                       command_done(c->cmd_ctx);
                        free(c);
                        return retval;
                }