Changeset: 68676da4964c for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=68676da4964c
Modified Files:
clients/mapiclient/ReadlineTools.c
clients/mapiclient/dump.c
clients/mapiclient/mclient.c
clients/mapiclient/tomograph.c
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
common/stream/stream.c
configure.ag
geom/monetdb5/geom.c
monetdb5/mal/mal_atom.c
monetdb5/mal/mal_builder.c
monetdb5/mal/mal_debugger.c
monetdb5/mal/mal_import.c
monetdb5/modules/atoms/xml.c
sql/backends/monet5/LSST/lsst.c
sql/backends/monet5/sql_cast.c
sql/backends/monet5/sql_optimizer.c
sql/backends/monet5/sql_result.c
sql/backends/monet5/vaults/fits.c
sql/server/rel_select.c
testing/Mtest.py.in
tools/merovingian/daemon/argvcmds.c
tools/merovingian/daemon/client.c
tools/merovingian/daemon/controlrunner.c
tools/merovingian/daemon/proxy.c
tools/merovingian/utils/control.c
tools/merovingian/utils/database.c
tools/merovingian/utils/properties.c
tools/merovingian/utils/properties.h
Branch: multifarm
Log Message:
Merge with default branch.
diffs (truncated from 1153 to 300 lines):
diff --git a/clients/mapiclient/ReadlineTools.c
b/clients/mapiclient/ReadlineTools.c
--- a/clients/mapiclient/ReadlineTools.c
+++ b/clients/mapiclient/ReadlineTools.c
@@ -92,8 +92,9 @@ sql_tablename_generator(const char *text
while (seekpos < rowcount) {
const char *name;
- mapi_seek_row(table_hdl, seekpos++, MAPI_SEEK_SET);
- mapi_fetch_row(table_hdl);
+ if (mapi_seek_row(table_hdl, seekpos++, MAPI_SEEK_SET) != MOK ||
+ mapi_fetch_row(table_hdl) <= 0)
+ continue;
name = mapi_fetch_field(table_hdl, 0);
if (strncmp(name, text, len) == 0) {
char *s;
diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -1833,8 +1833,6 @@ dump_database(Mapi mid, stream *toConsol
return rc;
bailout:
- if( curschema )
- free(curschema);
if (hdl) {
if (mapi_result_error(hdl))
mapi_explain_result(hdl, stderr);
@@ -1845,6 +1843,8 @@ dump_database(Mapi mid, stream *toConsol
mapi_explain(mid, stderr);
bailout2:
+ if (curschema)
+ free(curschema);
hdl = mapi_query(mid, end);
if (hdl)
mapi_close_handle(hdl);
diff --git a/clients/mapiclient/mclient.c b/clients/mapiclient/mclient.c
--- a/clients/mapiclient/mclient.c
+++ b/clients/mapiclient/mclient.c
@@ -2027,7 +2027,6 @@ doFile(Mapi mid, const char *file, int u
/* test for special commands */
if (mode != MAL)
while (length > 0 &&
- (*line & ~0x7F) == 0 &&
isascii((int) *line) &&
isspace((int) *line)) {
line++;
diff --git a/clients/mapiclient/tomograph.c b/clients/mapiclient/tomograph.c
--- a/clients/mapiclient/tomograph.c
+++ b/clients/mapiclient/tomograph.c
@@ -1106,7 +1106,10 @@ showcolormap(char *filename, int all)
if (all) {
snprintf(buf, BUFSIZ, "%s.gpl", filename);
f = fopen(buf, "w");
- assert(f);
+ if (f == NULL) {
+ fprintf(stderr, "Creating file %s.gpl failed\n",
filename);
+ exit(1);
+ }
fprintf(f, "set terminal pdfcairo noenhanced color solid size
8.3, 11.7\n");
fprintf(f, "set output \"%s.pdf\"\n", filename);
fprintf(f, "set size 1,1\n");
@@ -1237,6 +1240,10 @@ showcolormap(char *filename, int all)
fprintf(f, "\" at %d,%d\n",
(int) (0.2 * w), h - 35);
fprintf(f, "plot 0 notitle with lines linecolor rgb \"white\"\n");
+ if (all) {
+ assert(f != gnudata);
+ fclose(f);
+ }
}
static void
@@ -1296,7 +1303,10 @@ keepdata(char *filename)
return;
snprintf(buf, BUFSIZ, "%s.trace", filename);
f = fopen(buf, "w");
- assert(f);
+ if (f == NULL) {
+ fprintf(stderr, "Creating file %s.trace failed\n", filename);
+ exit(1);
+ }
for (i = 0; i < topbox; i++)
if (box[i].clkend && box[i].fcn) {
@@ -1855,8 +1865,10 @@ parser(char *row)
/* find genuine function calls */
while (isspace((int) *fcn) && *fcn)
fcn++;
- if (strchr(fcn, '.') == 0)
+ if (strchr(fcn, '.') == 0) {
+ free(stmt);
return -10;
+ }
} else {
fcn = strchr(fcn, '"');
if (fcn) {
@@ -2149,6 +2161,10 @@ stop_cleanup:
doQ("profiler.stop();");
doQ("profiler.closeStream();");
stop_disconnect:
+ if (dbhsql) {
+ mapi_disconnect(dbhsql);
+ mapi_destroy(dbhsql);
+ }
if (wthr->dbh) {
mapi_disconnect(wthr->dbh);
mapi_destroy(wthr->dbh);
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
@@ -190,14 +190,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
@@ -194,14 +194,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
@@ -518,6 +518,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);
}
@@ -531,14 +533,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
@@ -276,14 +276,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
@@ -208,14 +208,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/common/stream/stream.c b/common/stream/stream.c
--- a/common/stream/stream.c
+++ b/common/stream/stream.c
@@ -749,8 +749,12 @@ open_stream(const char *filename, const
if (file_read(s, buf, 1, UTF8BOMLENGTH) == UTF8BOMLENGTH &&
strncmp(buf, UTF8BOM, UTF8BOMLENGTH) == 0)
s->isutf8 = 1;
- else
- file_fsetpos(s, pos);
+ else if (file_fsetpos(s, pos) < 0) {
+ /* unlikely: we couldn't seek the file back */
+ fclose(fp);
+ destroy(s);
+ return NULL;
+ }
}
return s;
}
@@ -1035,6 +1039,11 @@ open_bzstream(const char *filename, cons
free(bzp);
return NULL;
}
+ s->read = stream_bzread;
+ s->write = stream_bzwrite;
+ s->close = stream_bzclose;
+ s->flush = NULL;
+ s->stream_data.p = (void *) bzp;
if (strchr(flags, 'r') != NULL) {
bzp->b = BZ2_bzReadOpen(&err, bzp->f, 0, 0, NULL, 0);
s->access = ST_READ;
@@ -1051,11 +1060,6 @@ open_bzstream(const char *filename, cons
destroy(s);
return NULL;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list