Changeset: ec54dfd5bee7 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ec54dfd5bee7
Modified Files:
clients/mapiclient/ReadlineTools.c
clients/mapiclient/dump.c
clients/odbc/driver/ODBCUtil.c
common/options/monet_options.c
common/stream/mapi_stream.c
common/stream/stream.c
Branch: Sep2022
Log Message:
Some coverity inspired fixes.
diffs (204 lines):
diff --git a/clients/mapiclient/ReadlineTools.c
b/clients/mapiclient/ReadlineTools.c
--- a/clients/mapiclient/ReadlineTools.c
+++ b/clients/mapiclient/ReadlineTools.c
@@ -406,7 +406,7 @@ invoke_editor(int cnt, int key) {
}
fclose(fp);
- MT_remove(template);
+ (void) MT_remove(template);
return 0;
@@ -414,7 +414,7 @@ bailout:
if (fp)
fclose(fp);
free(read_buff);
- MT_remove(template);
+ (void) MT_remove(template);
return 1;
}
diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c
--- a/clients/mapiclient/dump.c
+++ b/clients/mapiclient/dump.c
@@ -3390,7 +3390,7 @@ dump_database(Mapi mid, stream *toConsol
}
if (priv & 64) {
mnstr_printf(toConsole, "%s TRUNCATE", sep);
- sep = ",";
+ // sep = ","; /* sep will be
overwritten after this */
}
}
mnstr_printf(toConsole, " ON TABLE ");
diff --git a/clients/odbc/driver/ODBCUtil.c b/clients/odbc/driver/ODBCUtil.c
--- a/clients/odbc/driver/ODBCUtil.c
+++ b/clients/odbc/driver/ODBCUtil.c
@@ -1269,7 +1269,7 @@ ODBCTranslateSQL(ODBCDbc *dbc, const SQL
free(nquery);
nquery = q;
q += n;
- } else if (strcmp(func->name, "user")
== 0) {
+ } else if (strcmp(func->name, "user")
== 0 && nargs == 0) {
length += (dbc->Connected &&
dbc->uid ? strlen(dbc->uid) : 0) + 3 - pr;
q = malloc(length);
if (q == NULL) {
@@ -1280,7 +1280,7 @@ ODBCTranslateSQL(ODBCDbc *dbc, const SQL
free(nquery);
nquery = q;
q += n;
- } else if (strcmp(func->name,
"database") == 0) {
+ } else if (strcmp(func->name,
"database") == 0 && nargs == 0) {
length += (dbc->Connected &&
dbc->dbname ? strlen(dbc->dbname) : 0) + 3 - pr;
q = malloc(length);
if (q == NULL) {
@@ -1291,7 +1291,7 @@ ODBCTranslateSQL(ODBCDbc *dbc, const SQL
free(nquery);
nquery = q;
q += n;
- } else if (strcmp(func->name,
"convert") == 0) {
+ } else if (strcmp(func->name,
"convert") == 0 && nargs == 2) {
struct convert *c;
for (c = convert; c->odbc; c++)
{
if
(strncasecmp(c->odbc, args[1].argstart, args[1].arglen) == 0 &&
diff --git a/common/options/monet_options.c b/common/options/monet_options.c
--- a/common/options/monet_options.c
+++ b/common/options/monet_options.c
@@ -172,10 +172,18 @@ mo_config_file(opt **Set, int setlen, ch
if (t <= val)
val = t - 1;
- set = (opt *) realloc(set, (setlen + 1) * sizeof(opt));
+ opt *tmp = realloc(set, (setlen + 1) * sizeof(opt));
+ if (tmp == NULL)
+ return setlen;
+ *Set = set = tmp;
set[setlen].kind = opt_config;
set[setlen].name = strdup(s);
set[setlen].value = malloc((size_t) (t - val));
+ if (set[setlen].name == NULL || set[setlen].value == NULL) {
+ free(set[setlen].name);
+ free(set[setlen].value);
+ return setlen;
+ }
for (t = val, s = set[setlen].value; *t; t++)
if (*t != '"')
*s++ = *t;
@@ -183,7 +191,6 @@ mo_config_file(opt **Set, int setlen, ch
setlen++;
}
(void) fclose(fd);
- *Set = set;
return setlen;
}
@@ -222,30 +229,55 @@ mo_builtin_settings(opt **Set)
if (set == NULL)
return 0;
+ *Set = set;
set[i].kind = opt_builtin;
set[i].name = strdup("gdk_dbpath");
set[i].value = strdup(LOCALSTATEDIR DIR_SEP_STR "monetdb5" DIR_SEP_STR
"dbfarm" DIR_SEP_STR "demo");
+ if (set[i].name == NULL || set[i].value == NULL) {
+ free(set[i].name);
+ free(set[i].value);
+ return i;
+ }
i++;
set[i].kind = opt_builtin;
set[i].name = strdup("mapi_port");
set[i].value = strdup(MAPI_PORT_STR);
+ if (set[i].name == NULL || set[i].value == NULL) {
+ free(set[i].name);
+ free(set[i].value);
+ return i;
+ }
i++;
set[i].kind = opt_builtin;
set[i].name = strdup("sql_optimizer");
set[i].value = strdup("default_pipe");
+ if (set[i].name == NULL || set[i].value == NULL) {
+ free(set[i].name);
+ free(set[i].value);
+ return i;
+ }
i++;
set[i].kind = opt_builtin;
set[i].name = strdup("sql_debug");
set[i].value = strdup("0");
+ if (set[i].name == NULL || set[i].value == NULL) {
+ free(set[i].name);
+ free(set[i].value);
+ return i;
+ }
i++;
set[i].kind = opt_builtin;
set[i].name = strdup("raw_strings");
set[i].value = strdup("false");
+ if (set[i].name == NULL || set[i].value == NULL) {
+ free(set[i].name);
+ free(set[i].value);
+ return i;
+ }
i++;
assert(i == N_OPTIONS);
- *Set = set;
return i;
}
@@ -262,11 +294,18 @@ mo_add_option(opt **Set, int setlen, opt
setlen = default_setlen;
Set = &default_set;
}
- set = (opt *) realloc(*Set, (setlen + 1) * sizeof(opt));
+ opt *tmp = (opt *) realloc(*Set, (setlen + 1) * sizeof(opt));
+ if (tmp == NULL)
+ return setlen;
+ *Set = set = tmp;
set[setlen].kind = kind;
set[setlen].name = strdup(name);
set[setlen].value = strdup(value);
- *Set = set;
+ if (set[setlen].name == NULL || set[setlen].value == NULL) {
+ free(set[setlen].name);
+ free(set[setlen].value);
+ return setlen;
+ }
return setlen + 1;
}
diff --git a/common/stream/mapi_stream.c b/common/stream/mapi_stream.c
--- a/common/stream/mapi_stream.c
+++ b/common/stream/mapi_stream.c
@@ -133,6 +133,7 @@ mapi_request_upload(const char *filename
}
s = create_stream("ONCLIENT");
if (!s) {
+ free(state); /* no chance to free through
destroy function */
msg = mnstr_peek_error(NULL);
goto end;
}
diff --git a/common/stream/stream.c b/common/stream/stream.c
--- a/common/stream/stream.c
+++ b/common/stream/stream.c
@@ -900,7 +900,7 @@ open_wstream(const char *filename)
stream *c = compressed_stream(s, 0);
if (c == NULL) {
close_stream(s);
- file_remove(filename);
+ (void) file_remove(filename);
}
return c;
@@ -940,7 +940,7 @@ open_wastream(const char *filename)
stream *t = create_text_stream(s);
if (t == NULL) {
close_stream(s);
- file_remove(filename);
+ (void) file_remove(filename);
}
return t;
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]