Changeset: e0d45a4f0d50 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e0d45a4f0d50
Modified Files:
        clients/odbc/driver/SQLColumnPrivileges.c
        clients/odbc/driver/SQLColumns.c
        clients/odbc/driver/SQLPrepare.c
        clients/odbc/driver/SQLPrimaryKeys.c
        clients/odbc/driver/SQLProcedures.c
        clients/odbc/driver/SQLSpecialColumns.c
        clients/odbc/driver/SQLStatistics.c
        clients/odbc/driver/SQLTablePrivileges.c
        geom/monetdb5/geom.c
Branch: Jan2014
Log Message:

Fixed some errors that were found by Coverity.


diffs (177 lines):

diff --git a/clients/odbc/driver/SQLColumnPrivileges.c 
b/clients/odbc/driver/SQLColumnPrivileges.c
--- a/clients/odbc/driver/SQLColumnPrivileges.c
+++ b/clients/odbc/driver/SQLColumnPrivileges.c
@@ -234,6 +234,7 @@ SQLColumnPrivileges_(ODBCStmt *stmt,
        return rc;
 
   nomem:
+       /* note that query must be NULL when we get here */
        if (cat)
                free(cat);
        if (sch)
@@ -242,8 +243,6 @@ SQLColumnPrivileges_(ODBCStmt *stmt,
                free(tab);
        if (col)
                free(col);
-       if (query)
-               free(query);
        /* Memory allocation error */
        addStmtError(stmt, "HY001", NULL, 0);
        return SQL_ERROR;
diff --git a/clients/odbc/driver/SQLColumns.c b/clients/odbc/driver/SQLColumns.c
--- a/clients/odbc/driver/SQLColumns.c
+++ b/clients/odbc/driver/SQLColumns.c
@@ -531,6 +531,7 @@ SQLColumns_(ODBCStmt *stmt,
        return rc;
 
   nomem:
+       /* note that query must be NULL when we get here */
        if (cat)
                free(cat);
        if (sch)
@@ -539,8 +540,6 @@ SQLColumns_(ODBCStmt *stmt,
                free(tab);
        if (col)
                free(col);
-       if (query)
-               free(query);
        /* Memory allocation error */
        addStmtError(stmt, "HY001", NULL, 0);
        return SQL_ERROR;
diff --git a/clients/odbc/driver/SQLPrepare.c b/clients/odbc/driver/SQLPrepare.c
--- a/clients/odbc/driver/SQLPrepare.c
+++ b/clients/odbc/driver/SQLPrepare.c
@@ -178,8 +178,9 @@ SQLPrepare_(ODBCStmt *stmt,
                        if (rec->sql_desc_schema_name) {
                                /* base table name and base column
                                 * name exist if there is a schema
-                                * name */
-                               rec->sql_desc_base_table_name = (SQLCHAR *) 
strdup((char *) rec->sql_desc_table_name);
+                                * name; the extra check is for static
+                                * code analyzers and robustness */
+                               rec->sql_desc_base_table_name = 
rec->sql_desc_table_name ? (SQLCHAR *) strdup((char *) 
rec->sql_desc_table_name) : NULL;
                                rec->sql_desc_base_column_name = (SQLCHAR *) 
strdup((char *) rec->sql_desc_name);
                        } else {
                                rec->sql_desc_base_table_name = NULL;
diff --git a/clients/odbc/driver/SQLPrimaryKeys.c 
b/clients/odbc/driver/SQLPrimaryKeys.c
--- a/clients/odbc/driver/SQLPrimaryKeys.c
+++ b/clients/odbc/driver/SQLPrimaryKeys.c
@@ -191,14 +191,13 @@ SQLPrimaryKeys_(ODBCStmt *stmt,
        return rc;
 
   nomem:
+       /* note that query must be NULL when we get here */
        if (cat)
                free(cat);
        if (sch)
                free(sch);
        if (tab)
                free(tab);
-       if (query)
-               free(query);
        /* Memory allocation error */
        addStmtError(stmt, "HY001", NULL, 0);
        return SQL_ERROR;
diff --git a/clients/odbc/driver/SQLProcedures.c 
b/clients/odbc/driver/SQLProcedures.c
--- a/clients/odbc/driver/SQLProcedures.c
+++ b/clients/odbc/driver/SQLProcedures.c
@@ -192,14 +192,13 @@ SQLProcedures_(ODBCStmt *stmt,
        return rc;
 
   nomem:
+       /* note that query must be NULL when we get here */
        if (cat)
                free(cat);
        if (sch)
                free(sch);
        if (pro)
                free(pro);
-       if (query)
-               free(query);
        /* Memory allocation error */
        addStmtError(stmt, "HY001", NULL, 0);
        return SQL_ERROR;
diff --git a/clients/odbc/driver/SQLSpecialColumns.c 
b/clients/odbc/driver/SQLSpecialColumns.c
--- a/clients/odbc/driver/SQLSpecialColumns.c
+++ b/clients/odbc/driver/SQLSpecialColumns.c
@@ -519,6 +519,8 @@ SQLSpecialColumns_(ODBCStmt *stmt,
                               "cast(0 as smallint) as decimal_digits, "
                               "cast(0 as smallint) as pseudo_column "
                               "where 0 = 1");
+               if (query == NULL)
+                       goto nomem;
                query_end = query + strlen(query);
        }
 
@@ -532,14 +534,13 @@ SQLSpecialColumns_(ODBCStmt *stmt,
        return rc;
 
   nomem:
+       /* note that query must be NULL when we get here */
        if (cat)
                free(cat);
        if (sch)
                free(sch);
        if (tab)
                free(tab);
-       if (query)
-               free(query);
        /* Memory allocation error */
        addStmtError(stmt, "HY001", NULL, 0);
        return SQL_ERROR;
diff --git a/clients/odbc/driver/SQLStatistics.c 
b/clients/odbc/driver/SQLStatistics.c
--- a/clients/odbc/driver/SQLStatistics.c
+++ b/clients/odbc/driver/SQLStatistics.c
@@ -273,14 +273,13 @@ SQLStatistics_(ODBCStmt *stmt,
        return rc;
 
   nomem:
+       /* note that query must be NULL when we get here */
        if (cat)
                free(cat);
        if (sch)
                free(sch);
        if (tab)
                free(tab);
-       if (query)
-               free(query);
        /* Memory allocation error */
        addStmtError(stmt, "HY001", NULL, 0);
        return SQL_ERROR;
diff --git a/clients/odbc/driver/SQLTablePrivileges.c 
b/clients/odbc/driver/SQLTablePrivileges.c
--- a/clients/odbc/driver/SQLTablePrivileges.c
+++ b/clients/odbc/driver/SQLTablePrivileges.c
@@ -209,14 +209,13 @@ SQLTablePrivileges_(ODBCStmt *stmt,
        return rc;
 
   nomem:
+       /* note that query must be NULL when we get here */
        if (cat)
                free(cat);
        if (sch)
                free(sch);
        if (tab)
                free(tab);
-       if (query)
-               free(query);
        /* Memory allocation error */
        addStmtError(stmt, "HY001", NULL, 0);
        return SQL_ERROR;
diff --git a/geom/monetdb5/geom.c b/geom/monetdb5/geom.c
--- a/geom/monetdb5/geom.c
+++ b/geom/monetdb5/geom.c
@@ -781,10 +781,13 @@ wkbcreatepoint_bat(int *out, int *ix, in
        for (i = 0, o = BUNlast(bo); i < BATcount(bx); i++, o++) {
                str err = NULL;
                if ((err = wkbcreatepoint(&p, &x[i], &y[i])) != MAL_SUCCEED) {
+                       str msg;
                        BBPreleaseref(bx->batCacheid);
                        BBPreleaseref(by->batCacheid);
                        BBPreleaseref(bo->batCacheid);
-                       throw(MAL, "geom.point", "%s", err);
+                       msg = createException(MAL, "geom.point", "%s", err);
+                       GDKfree(err);
+                       return msg;
                }
                tfastins_nocheck(bo, o, p, Tsize(bo));
                GDKfree(p);
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to