--- 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(×tamp); - 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]);