bmsd/co2meters.c

branch
stable
changeset 665
4d01937ae7af
parent 558
a8e065a9f851
child 673
9924b1218d39
--- a/bmsd/co2meters.c	Fri Oct 18 13:20:35 2019 +0200
+++ b/bmsd/co2meters.c	Fri May 01 16:37:31 2020 +0200
@@ -235,9 +235,9 @@
     jobj = json_tokener_parse(payload);
 
     timestamp = time(NULL);
-    log->datetime = malloc(21);
+    log->datetime = malloc(73);
     mytime = localtime(&timestamp);
-    snprintf(log->datetime, 20, "%04d-%02d-%02d %02d:%02d:%02d", 
+    snprintf(log->datetime, 72, "%04d-%02d-%02d %02d:%02d:%02d",
 	mytime->tm_year + 1900, mytime->tm_mon + 1, mytime->tm_mday, mytime->tm_hour, mytime->tm_min, mytime->tm_sec);
 
     if (json_object_object_get_ex(jobj, "metric", &metric)) {
@@ -267,6 +267,21 @@
             syslog(LOG_NOTICE, "MySQL: mysq_store_result error %u (%s))", mysql_errno(con), mysql_error(con));
         } else {
             if ((row = mysql_fetch_row(res_set)) != NULL) {
+		/*
+		 * Ignore when the beer_name or beer_code is not set.
+		 */
+		if ((int)strlen(row[0]) == 0 || (int)strlen(row[1]) == 0) {
+		    if (log->datetime)
+        		free(log->datetime);
+    		    if (log->uuid)
+        		free(log->uuid);
+    		    if (log->node)
+        		free(log->node);
+    		    if (log->alias)
+        		free(log->alias);
+    		    free(log);
+		    return;
+		}
 		log->product_code = xstrcpy(row[0]);
 		log->product_name = xstrcpy(row[1]);
 		log->product_uuid = xstrcpy(row[2]);

mercurial