aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/interfaces/odbc/environ.c1
-rw-r--r--src/interfaces/odbc/socket.c7
2 files changed, 8 insertions, 0 deletions
diff --git a/src/interfaces/odbc/environ.c b/src/interfaces/odbc/environ.c
index 6099ba4d100..fb8ed6869ae 100644
--- a/src/interfaces/odbc/environ.c
+++ b/src/interfaces/odbc/environ.c
@@ -425,6 +425,7 @@ char rv = 1;
if (conns[lf] && conns[lf]->henv == self)
rv = rv && CC_Destructor(conns[lf]);
}
+ free(self);
mylog("exit EN_Destructor: rv = %d\n", rv);
return rv;
diff --git a/src/interfaces/odbc/socket.c b/src/interfaces/odbc/socket.c
index 6b551792fe1..555f9bff4cc 100644
--- a/src/interfaces/odbc/socket.c
+++ b/src/interfaces/odbc/socket.c
@@ -58,11 +58,18 @@ SocketClass *rv;
rv->buffer_in = (unsigned char *) malloc(globals.socket_buffersize);
if ( ! rv->buffer_in)
+ {
+ free(rv);
return NULL;
+ }
rv->buffer_out = (unsigned char *) malloc(globals.socket_buffersize);
if ( ! rv->buffer_out)
+ {
+ free(rv->buffer_in);
+ free(rv);
return NULL;
+ }
rv->errormsg = NULL;
rv->errornumber = 0;