Changeset: acf971c5233e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=acf971c5233e
Modified Files:
        MonetDB4/src/modules/contrib/array.mx
        MonetDB4/src/modules/mnetcdf/mnetcdf.mx
        MonetDB4/src/modules/plain/builtin.mx
        MonetDB5/src/modules/mal/mal_io.mx
        buildtools/Mx/Sys.c
        pathfinder/compiler/mem/array.c
        sql/src/storage/bat/bat_table.mx
        sql/src/storage/bpm/bpm_table.mx
        sql/src/storage/restrict/restrict_table.mx
Branch: Oct2010
Log Message:

va_start and va_copy must be accompanied by va_end.
Found by Coverity.


diffs (246 lines):

diff -r acfe93f09b39 -r acf971c5233e MonetDB4/src/modules/contrib/array.mx
--- a/MonetDB4/src/modules/contrib/array.mx     Mon Dec 20 17:53:14 2010 +0100
+++ b/MonetDB4/src/modules/contrib/array.mx     Tue Dec 21 13:16:04 2010 +0100
@@ -186,11 +186,11 @@
                }
                batptr[dims++] = tmp;
        }
+       va_end(ap);
        if (dims == 0) {
                GDKerror("print_array: Error, no index bats provided.\n");
                goto exit_err_none;
        }
-       va_end(ap);
 
 #ifdef EXCESSIVE_DEBUGGING
        fprintf(stderr, "[PRINT_ARRAY] Dims = %d\n", dims);
diff -r acfe93f09b39 -r acf971c5233e MonetDB4/src/modules/mnetcdf/mnetcdf.mx
--- a/MonetDB4/src/modules/mnetcdf/mnetcdf.mx   Mon Dec 20 17:53:14 2010 +0100
+++ b/MonetDB4/src/modules/mnetcdf/mnetcdf.mx   Tue Dec 21 13:16:04 2010 +0100
@@ -668,6 +668,7 @@
        while ((tmp = va_arg(ap, BAT *)) != NULL) {
                if (dims == NC_MAX_DIMS) {
                        GDKerror("dimensionality too high");
+                       va_end(ap);
                        return GDK_FAIL;
                }
                bi[dims++].b = tmp;
@@ -873,6 +874,7 @@
        dims = 0;
        while ((tmp = va_arg(ap, int *)) != NULL) {
                if (dims == NC_MAX_DIMS) {
+                       va_end(ap);
                        GDKerror("dimensionality too high");
                        return GDK_FAIL;
                }
diff -r acfe93f09b39 -r acf971c5233e MonetDB4/src/modules/plain/builtin.mx
--- a/MonetDB4/src/modules/plain/builtin.mx     Mon Dec 20 17:53:14 2010 +0100
+++ b/MonetDB4/src/modules/plain/builtin.mx     Tue Dec 21 13:16:04 2010 +0100
@@ -1221,6 +1221,7 @@
                }
                piv[nbats++] = b;
        }
+       va_end(ap);
        return CMDprint_bats(nbats, piv, *order);
 }
 
@@ -1242,6 +1243,7 @@
                }
                piv[nbats++] = b;
        } while ((b = va_arg(ap, BAT *)) != NULL);
+       va_end(ap);
 
        return CMDprint_bats(nbats, piv, 0);
 }
diff -r acfe93f09b39 -r acf971c5233e MonetDB5/src/modules/mal/mal_io.mx
--- a/MonetDB5/src/modules/mal/mal_io.mx        Mon Dec 20 17:53:14 2010 +0100
+++ b/MonetDB5/src/modules/mal/mal_io.mx        Tue Dec 21 13:16:04 2010 +0100
@@ -381,12 +381,12 @@
                *res = GDKstrdup(format);
                return MAL_SUCCEED;
        }
-       va_start(ap,format);
        buf = dst = (str) GDKmalloc(size = 80);
        if ( buf == NULL)
                throw(MAL,"io.printf",MAL_MALLOC_FAIL);
        *res = NULL;
 
+       va_start(ap,format);
        for (cur = format; *cur; cur++) {
                if (paramseen) {
                        char meta[100];
@@ -414,6 +414,7 @@
                                }
                        }
                        if ((p = va_arg(ap, char *)) == NULL) {
+                               va_end(ap);
                                return_error(toofew_error);
                        }
                        type = ATOMstorage(va_arg(ap, int));
@@ -439,6 +440,7 @@
                                int ival;
 
                                if (dotseen) {
+                                       va_end(ap);
                                        return_error(format_error);
                                } else if (type == TYPE_chr) {
                                        ival = (int) *(chr *) p;
@@ -455,6 +457,7 @@
                                } else if (type == TYPE_int) {
                                        ival = *(int *) p;
                                } else {
+                                       va_end(ap);
                                        return_error(type_error);
                                }
                                @:sprintf(ival)@
@@ -465,6 +468,7 @@
                                lng lval;
 
                                if (dotseen) {
+                                       va_end(ap);
                                        return_error(format_error);
                                }
                        largetypes:
@@ -485,6 +489,7 @@
                                } else if (type == TYPE_lng) {
                                        lval = *(lng *) p;
                                } else {
+                                       va_end(ap);
                                        return_error(type_error);
                                }
                                if (!extra) {
@@ -512,6 +517,7 @@
                                } else if (type == TYPE_dbl) {
                                        dval = *(dbl *) p;
                                } else {
+                                       va_end(ap);
                                        return_error(type_error);
                                }
                                width += (1 + prec);
@@ -524,8 +530,10 @@
                                int length;
 
                                if (extra) {
+                                       va_end(ap);
                                        return_error(format_error);
                                } else if (type != TYPE_str) {
+                                       va_end(ap);
                                        return_error(type_error);
                                }
                                length = strLen(p);
@@ -537,6 +545,7 @@
                                        width = (size_t) length;
                                @:sprintf(p)@
                        } else {
+                               va_end(ap);
                                return_error(format_error);
                        }
                        width = strlen(add);
diff -r acfe93f09b39 -r acf971c5233e buildtools/Mx/Sys.c
--- a/buildtools/Mx/Sys.c       Mon Dec 20 17:53:14 2010 +0100
+++ b/buildtools/Mx/Sys.c       Tue Dec 21 13:16:04 2010 +0100
@@ -42,7 +42,6 @@
        if (mx_out & 1)
                vfprintf(ofile, format, ap);
        va_start(ap, format);
-       va_start(ap, format);
        if (ofile_body && (mx_out & 4))
                vfprintf(ofile_body, format, ap);
        va_end(ap);
diff -r acfe93f09b39 -r acf971c5233e pathfinder/compiler/mem/array.c
--- a/pathfinder/compiler/mem/array.c   Mon Dec 20 17:53:14 2010 +0100
+++ b/pathfinder/compiler/mem/array.c   Tue Dec 21 13:16:04 2010 +0100
@@ -260,10 +260,12 @@
      */
     va_copy(tmp, mat);
     while ((nchars = vsnprintf (try, len, fmt, tmp)) < 0) {
+        va_end(tmp);
         len *= 2;
         try = realloc(try, len);
         va_copy(tmp, mat);
     }
+    va_end(tmp);
     free(try);
 
 
diff -r acfe93f09b39 -r acf971c5233e sql/src/storage/bat/bat_table.mx
--- a/sql/src/storage/bat/bat_table.mx  Mon Dec 20 17:53:14 2010 +0100
+++ b/sql/src/storage/bat/bat_table.mx  Tue Dec 21 13:16:04 2010 +0100
@@ -151,6 +151,7 @@
                c = nc;
                value = nv;
        }
+       va_end(va);
        b = full_column(c, d, s);
        if (s)
                bat_destroy(s);
@@ -221,6 +222,7 @@
                store_funcs.append_col(tr, c, val, c->type.type->localtype);
                cnt++;
        }
+       va_end(va);
        if (n) {
                fprintf(stderr, "called table_insert(%s) with wrong number of 
args (%d,%d)\n", t->base.name, list_length(t->columns.set), cnt);
                assert(0);
@@ -318,6 +320,7 @@
                        key_value_low = nvl;
                        key_value_high = nvh;
                }
+               va_end(va);
        }
        b = full_column(key, d, s);
        if (s)
diff -r acfe93f09b39 -r acf971c5233e sql/src/storage/bpm/bpm_table.mx
--- a/sql/src/storage/bpm/bpm_table.mx  Mon Dec 20 17:53:14 2010 +0100
+++ b/sql/src/storage/bpm/bpm_table.mx  Tue Dec 21 13:16:04 2010 +0100
@@ -85,6 +85,7 @@
                c = nc;
                value = nv;
        }
+       va_end(va);
        b = full_column(c, d, s);
        if (s)
                bat_destroy(s);
@@ -155,6 +156,7 @@
                store_funcs.append_col(tr, c, val, c->type.type->localtype);
                cnt++;
        }
+       va_end(va);
        if (n) {
                fprintf(stderr, "called table_insert(%s) with wrong number of 
args (%d,%d)\n", t->base.name, list_length(t->columns.set), cnt);
                assert(0);
@@ -252,6 +254,7 @@
                        key_value_low = nvl;
                        key_value_high = nvh;
                }
+               va_end(va);
        }
        b = full_column(key, d, s);
        if (s)
diff -r acfe93f09b39 -r acf971c5233e sql/src/storage/restrict/restrict_table.mx
--- a/sql/src/storage/restrict/restrict_table.mx        Mon Dec 20 17:53:14 
2010 +0100
+++ b/sql/src/storage/restrict/restrict_table.mx        Tue Dec 21 13:16:04 
2010 +0100
@@ -99,6 +99,7 @@
                c = nc;
                value = nv;
        }
+       va_end(va);
        b = full_column(c, d, s);
        if (s)
                bat_destroy(s);
@@ -169,6 +170,7 @@
                store_funcs.append_col(tr, c, val, c->type.type->localtype);
                cnt++;
        }
+       va_end(va);
        if (n) {
                fprintf(stderr, "called table_insert(%s) with wrong number of 
args (%d,%d)\n", t->base.name, list_length(t->columns.set), cnt);
                assert(0);
@@ -219,6 +221,7 @@
                        key_value_low = nvl;
                        key_value_high = nvh;
                }
+               va_end(va);
        }
        b = full_column(key, d, s);
        if (s)
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list

Reply via email to