From 1fb85ef6b577839e287ec78c7dd297ec7847499e Mon Sep 17 00:00:00 2001 From: Koennecke Mark Date: Fri, 8 Apr 2016 11:24:02 +0200 Subject: [PATCH] Fixed core dumps when closing unintialized mongo or sqlite log instances Fixed a Host header bug in sinqhttpopt --- mongolog.c | 12 +++++++----- sicslogquery.c | 3 ++- sinqhttpopt.c | 6 +++--- sqlitelog.c | 6 ++++-- 4 files changed, 16 insertions(+), 11 deletions(-) diff --git a/mongolog.c b/mongolog.c index c51b840..3558a62 100644 --- a/mongolog.c +++ b/mongolog.c @@ -29,9 +29,11 @@ static void MongoCallback(unsigned int severity, const char *timeStamp, static void MongoClose(void *data) { RemoveLogCallback(MongoCallback); - mongoc_collection_destroy (collection); - mongoc_client_destroy (client); - mongoc_cleanup (); + if(collection != NULL){ + mongoc_collection_destroy (collection); + mongoc_client_destroy (client); + mongoc_cleanup (); + } client = NULL; collection = NULL; } @@ -155,7 +157,7 @@ static void QueryCallback(const bson_t *doc, void *userData) bson_iter_find(&iter,"severity"); severity = bson_iter_int32(&iter); formatSeverity(severity,sevBuf,sizeof(sevBuf)); - DynStringConcat(result,(char *)severity); + DynStringConcat(result,(char *)sevBuf); DynStringConcatChar(result,' '); bson_iter_find(&iter,"sub"); sub = bson_iter_utf8(&iter,&length); @@ -182,7 +184,7 @@ static int MongoQueryAction(SConnection * pCon, SicsInterp * pSics, error = sicslogGetError(); SCPrintf(pCon,eError,"Error %s querying mongodb", error); } else { - SCPureSockWrite(pCon,GetCharArray(result),eValue); + SCPureSockWrite(pCon,GetCharArray(result),eLog); } DeleteDynString(result); return 1; diff --git a/sicslogquery.c b/sicslogquery.c index 52e1c3d..2044c4c 100644 --- a/sicslogquery.c +++ b/sicslogquery.c @@ -86,6 +86,7 @@ int sicslogQuery(int argc, char *argv[], ResultCallback_t func, void *userData) /* parse options */ + optind = 1; while((c = getopt(argc,argv,"s:l:f:t:i:e:c:")) != -1) { switch (c){ case 's': @@ -151,7 +152,7 @@ int sicslogQuery(int argc, char *argv[], ResultCallback_t func, void *userData) /* build the query */ - snprintf(jsonQuery, sizeof(jsonQuery),"{ \"timestamp\" : {\"$gt\": %ld, \"$lt\": %ld}, \"severity\": {\"$lt\": %d}", + snprintf(jsonQuery, sizeof(jsonQuery),"{ \"timestamp\" : {\"$gt\": %ld, \"$lt\": %ld}, \"severity\": {\"$lte\": %d}", from,to,severity-1); if(sub != NULL){ snprintf(subQuery,sizeof(subQuery),", \"sub\" : \"%s\"", sub); diff --git a/sinqhttpopt.c b/sinqhttpopt.c index 4637de1..f660073 100644 --- a/sinqhttpopt.c +++ b/sinqhttpopt.c @@ -168,11 +168,11 @@ static void sendGet(pHttpProt pHttp, char *path) char buffer[1024]; char hostname[256]; - gethostname(hostname,255); + ANETinfo(pHttp->sockHandle,hostname,sizeof(hostname)); snprintf(buffer,1024,"GET %s HTTP/1.1\r\nHost: %s\r\nConnection: keep-alive\r\n", path, hostname); ANETwrite(pHttp->sockHandle, buffer,strlen(buffer)); - sendAuth(pHttp); + sendAuth(pHttp); } /*---------------------------------------------------------------------*/ static void sendPost(pHttpProt pHttp, char *path, char *data) @@ -180,7 +180,7 @@ static void sendPost(pHttpProt pHttp, char *path, char *data) char buffer[1024]; char hostname[256]; - gethostname(hostname,255); + ANETinfo(pHttp->sockHandle,hostname,sizeof(hostname)); snprintf(buffer,1024,"POST %s HTTP/1.1\r\nHost: %s\r\nConnection: keep-alive\r\n", path, hostname); ANETwrite(pHttp->sockHandle, buffer,strlen(buffer)); diff --git a/sqlitelog.c b/sqlitelog.c index 216e94d..ac007ae 100644 --- a/sqlitelog.c +++ b/sqlitelog.c @@ -13,7 +13,7 @@ #include #include -static sqlite3 *db; +static sqlite3 *db = NULL; static char sqliteFile[1024]; static unsigned int lineCount = 0; static unsigned int sqlActive = 0; @@ -23,7 +23,7 @@ static void SqlFlush(void) { char *err; - if(sqlActive == 1){ + if(sqlActive == 1 && db != NULL){ sqlite3_exec(db,"END TRANSACTION",NULL,NULL,&err); lineCount = 0; } @@ -66,10 +66,12 @@ static void SqlClose(void *data) { char *err; + if(sqlActive == 1 && db != NULL){ sqlite3_exec(db,"END TRANSACTION",NULL,NULL,&err); sqlite3_close(db); RemoveLogCallback(SqliteCallback); sqlActive = 0; + } } /*------------------------------------------------------------------------------------*/ static int SQLLogConfigAction(SConnection * pCon, SicsInterp * pSics,