Changeset: ed40c786bc96 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=ed40c786bc96
Modified Files:
tools/merovingian/daemon/forkmserver.c
Branch: Oct2014
Log Message:
No use after free.
diffs (50 lines):
diff --git a/tools/merovingian/daemon/forkmserver.c
b/tools/merovingian/daemon/forkmserver.c
--- a/tools/merovingian/daemon/forkmserver.c
+++ b/tools/merovingian/daemon/forkmserver.c
@@ -64,6 +64,7 @@ forkMserver(char *database, sabdb** stat
char upavg[8];
char upmax[8];
confkeyval *ckv, *kv;
+ SABdbState state;
er = msab_getStatus(stats, database);
if (er != NULL) {
@@ -179,12 +180,13 @@ forkMserver(char *database, sabdb** stat
default:
/* this also includes SABdbStarting, which we shouldn't
ever
* see due to the global starting lock */
+ state = (*stats)->state;
msab_freeStatus(stats);
freeConfFile(ckv);
free(ckv);
pthread_mutex_unlock(&fork_lock);
return(newErr("unknown or impossible state: %d",
- (int)(*stats)->state));
+ (int)state));
}
/* create the pipes (filedescriptors) now, such that we and the
@@ -500,12 +502,12 @@ forkMserver(char *database, sabdb** stat
/* try to be clear on why starting the database failed */
if (dp == NULL) {
- int state = (*stats)->state;
+ state = (*stats)->state;
/* starting failed */
msab_freeStatus(stats);
- switch (state) {
+ switch ((int)state) {
case SABdbRunning:
/* right, it's not there, but it's
running */
return(newErr(
@@ -527,7 +529,7 @@ forkMserver(char *database, sabdb** stat
"check
monetdbd's logfile for possible "
"hints",
database));
default:
- return(newErr("unknown state: %d",
(int)(*stats)->state));
+ return(newErr("unknown state: %d",
(int)state));
}
}
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list