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]

Reply via email to