Changeset: b4cfca818b64 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=b4cfca818b64
Modified Files:
gdk/gdk_atoms.c
gdk/gdk_heap.c
gdk/gdk_storage.c
gdk/gdk_utils.c
java/src/nl/cwi/monetdb/merovingian/SabaothDB.java
monetdb5/mal/mal_atom.c
monetdb5/modules/mal/mal_mapi.c
monetdb5/optimizer/opt_macro.c
monetdb5/optimizer/opt_origin.c
sql/backends/monet5/sql_scenario.c
tools/merovingian/utils/database.c
Branch: default
Log Message:
Merge with Oct2012 branch.
diffs (208 lines):
diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c
--- a/gdk/gdk_atoms.c
+++ b/gdk/gdk_atoms.c
@@ -231,6 +231,7 @@ ATOMproperty(str id, str property, GDKfc
} else if (strcmp("storage", property) == 0) {
BATatoms[t] = BATatoms[val]; /* copy from example */
strncpy(BATatoms[t].name, id, IDLENGTH); /* restore name */
+ BATatoms[t].name[IDLENGTH - 1] = 0;
} else if (strcmp("fromstr", property) == 0) {
BATatoms[t].atomFromStr = (int (*)(const char *, int *, void
**)) arg;
} else if (strcmp("tostr", property) == 0) {
diff --git a/gdk/gdk_heap.c b/gdk/gdk_heap.c
--- a/gdk/gdk_heap.c
+++ b/gdk/gdk_heap.c
@@ -308,7 +308,8 @@ HEAPalloc(Heap *h, size_t nitems, size_t
} else {
char *ext;
- strcpy(nme, of);
+ strncpy(nme, of, sizeof(nme));
+ nme[sizeof(nme) - 1] = 0;
ext = decompose_filename(nme);
fp = GDKfilelocate(nme, "wb", ext);
if (fp != NULL) {
@@ -352,7 +353,8 @@ HEAPextend(Heap *h, size_t size)
char nme[PATHLENGTH], *ext = NULL;
if (h->filename) {
- strcpy(nme, h->filename);
+ strncpy(nme, h->filename, sizeof(nme));
+ nme[sizeof(nme) - 1] = 0;
ext = decompose_filename(nme);
}
if (size <= h->size)
@@ -624,7 +626,6 @@ HEAPload_intern(Heap *h, const char *nme
int ret = 0, desc_status = 0;
long_str srcpath, dstpath;
struct stat st;
- char *p;
h->storage = h->newstorage;
h->maxsize = h->size;
@@ -665,9 +666,8 @@ HEAPload_intern(Heap *h, const char *nme
* takes precedence. */
GDKfilepath(srcpath, BATDIR, nme, ext);
GDKfilepath(dstpath, BATDIR, nme, ext);
- for (p = srcpath; *p; p++)
- ;
- strcpy(p, suffix);
+ assert(strlen(srcpath) + strlen(suffix) < sizeof(srcpath));
+ strcat(srcpath, suffix);
ret = stat(dstpath, &st);
if (stat(srcpath, &st) == 0) {
int t0;
@@ -725,8 +725,8 @@ HEAPsave_intern(Heap *h, const char *nme
if (h->storage != STORE_MEM && store == STORE_PRIV) {
/* anonymous or private VM is saved as if it were malloced */
store = STORE_MEM;
- strcpy(extension, ext);
- strcat(extension, suffix);
+ assert(strlen(ext) + strlen(suffix) < sizeof(extension));
+ snprintf(extension, sizeof(extension), "%s%s", ext, suffix);
ext = extension;
} else if (store != STORE_MEM) {
store = h->storage;
@@ -762,8 +762,8 @@ HEAPdelete(Heap *h, const char *o, const
if (h->copied) {
return 0;
}
- strcpy(ext2, ext);
- strcat(ext2, ".new");
+ assert(strlen(ext) + strlen(".new") < sizeof(ext2));
+ snprintf(ext2, sizeof(ext2), "%s%s", ext, ".new");
return (GDKunlink(BATDIR, o, ext) == 0) | (GDKunlink(BATDIR, o, ext2)
== 0) ? 0 : -1;
}
diff --git a/gdk/gdk_storage.c b/gdk/gdk_storage.c
--- a/gdk/gdk_storage.c
+++ b/gdk/gdk_storage.c
@@ -71,7 +71,9 @@ GDKcreatedir(const char *dir)
char *r;
int ret = FALSE;
- strcpy(path, dir);
+ assert(strlen(dir) < sizeof(path));
+ strncpy(path, dir, sizeof(path)-1);
+ path[sizeof(path)-1] = 0;
r = strrchr(path, DIR_SEP);
IODEBUG THRprintf(GDKstdout, "#GDKcreatedir(%s)\n", path);
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -112,6 +112,9 @@ GDKenvironment(str dbname, str dbfarm)
assert(strlen(dbfarm) < PATHLENGTH);
strncpy(GDKdbnameStr, dbname, PATHLENGTH);
strncpy(GDKdbfarmStr, dbfarm, PATHLENGTH);
+ /* make coverity happy: */
+ GDKdbnameStr[PATHLENGTH - 1] = 0;
+ GDKdbfarmStr[PATHLENGTH - 1] = 0;
return 1;
}
diff --git a/java/src/nl/cwi/monetdb/merovingian/SabaothDB.java
b/java/src/nl/cwi/monetdb/merovingian/SabaothDB.java
--- a/java/src/nl/cwi/monetdb/merovingian/SabaothDB.java
+++ b/java/src/nl/cwi/monetdb/merovingian/SabaothDB.java
@@ -141,11 +141,11 @@ public class SabaothDB {
}
t = Long.parseLong(parts[12]);
if (t == -1) {
- this.lastCrash = null;
+ this.lastStart = null;
} else {
this.lastStart = new Date(t * 1000);
}
- this.crashAvg1 = parts[1].equals("1") ? true : false;
+ this.crashAvg1 = parts[13].equals("1") ? true : false;
this.crashAvg10 = Double.parseDouble(parts[14]);
this.crashAvg30 = Double.parseDouble(parts[15]);
}
diff --git a/monetdb5/mal/mal_atom.c b/monetdb5/mal/mal_atom.c
--- a/monetdb5/mal/mal_atom.c
+++ b/monetdb5/mal/mal_atom.c
@@ -278,6 +278,7 @@ void malAtomDefinition(stream *out, str
if (tpe) {
BATatoms[i] = BATatoms[tpe];
strncpy(BATatoms[i].name, name, sizeof(BATatoms[i].name));
+ BATatoms[i].name[sizeof(BATatoms[i].name) - 1] = 0; /* make
coverity happy */
BATatoms[i].storage = BATatoms[tpe].storage;
} else { /* cannot overload void atoms */
BATatoms[i].storage = i;
@@ -299,6 +300,7 @@ int malAtomFixed(int size, int align, ch
i = ATOMindex(name);
BATatoms[i] = BATatoms[TYPE_bte];
strncpy(BATatoms[i].name, name, sizeof(BATatoms[i].name));
+ BATatoms[i].name[sizeof(BATatoms[i].name) - 1] = 0;
BATatoms[i].storage = i;
BATatoms[i].size = size;
assert_shift_width(ATOMelmshift(BATatoms[i].size), BATatoms[i].size);
diff --git a/monetdb5/modules/mal/mal_mapi.c b/monetdb5/modules/mal/mal_mapi.c
--- a/monetdb5/modules/mal/mal_mapi.c
+++ b/monetdb5/modules/mal/mal_mapi.c
@@ -486,6 +486,7 @@ SERVERlisten(int *Port, str *Usockfile,
userver.sun_family = AF_UNIX;
strncpy(userver.sun_path, usockfile, sizeof(userver.sun_path));
+ userver.sun_path[sizeof(userver.sun_path) - 1] = 0;
length = (SOCKLEN) sizeof(userver);
unlink(usockfile);
diff --git a/monetdb5/optimizer/opt_macro.c b/monetdb5/optimizer/opt_macro.c
--- a/monetdb5/optimizer/opt_macro.c
+++ b/monetdb5/optimizer/opt_macro.c
@@ -99,7 +99,7 @@ malFcnMatch(MalBlkPtr mc, MalBlkPtr mb,
for (j = 0; j < p->argc; j++)
cvar[ctop++] = getArg(p, j);
- for (j = 0; j < p->argc; j++)
+ for (j = 0; j < q->argc; j++)
mvar[mtop++] = getArg(q, j);
}
assert(mtop == ctop); /*shouldn't happen */
diff --git a/monetdb5/optimizer/opt_origin.c b/monetdb5/optimizer/opt_origin.c
--- a/monetdb5/optimizer/opt_origin.c
+++ b/monetdb5/optimizer/opt_origin.c
@@ -83,7 +83,7 @@ OPToriginImplementation(Client cntxt, Ma
varSetProp(mb, getArg(p,0),
horiginProp, op_eq, &val);
}
if ( t ){
- VALset(&val, TYPE_str,
GDKstrdup(h->value.val.sval));
+ VALset(&val, TYPE_str,
GDKstrdup(t->value.val.sval));
varSetProp(mb, getArg(p,0),
toriginProp, op_eq, &val);
}
}
diff --git a/sql/backends/monet5/sql_scenario.c
b/sql/backends/monet5/sql_scenario.c
--- a/sql/backends/monet5/sql_scenario.c
+++ b/sql/backends/monet5/sql_scenario.c
@@ -821,7 +821,7 @@ SQLstatementIntern(Client c, str *expr,
(mvc_status(m) && m->type != Q_TRANS) || !m->sym) {
if (!err)
err = mvc_status(m);
- if (m->errstr && *m->errstr)
+ if (*m->errstr)
msg = createException(PARSE, "SQLparser", "%s",
m->errstr);
*m->errstr = 0;
sqlcleanup(m, err);
diff --git a/tools/merovingian/utils/database.c
b/tools/merovingian/utils/database.c
--- a/tools/merovingian/utils/database.c
+++ b/tools/merovingian/utils/database.c
@@ -276,6 +276,18 @@ char* db_rename(char *olddb, char *newdb
if ((p = db_validname(newdb)) != NULL)
return(p);
+ if ((p = msab_getStatus(&stats, newdb)) != NULL) {
+ snprintf(buf, sizeof(buf), "internal error: %s", p);
+ free(p);
+ return(strdup(buf));
+ }
+ if (stats != NULL) {
+ msab_freeStatus(&stats);
+ snprintf(buf, sizeof(buf), "a database with the same name "
+ "already exists: %s", newdb);
+ return(strdup(buf));
+ }
+
if ((p = msab_getStatus(&stats, olddb)) != NULL) {
snprintf(buf, sizeof(buf), "internal error: %s", p);
free(p);
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list