From dd9cbee87e002a9954d5f9dd743311cccd4cedef Mon Sep 17 00:00:00 2001 From: Jean-Philippe Orsini Date: Wed, 8 Jun 2016 14:22:42 +0200 Subject: [PATCH] fixed coredump when there are no sensors --- src/lib/hdd_atasmart.c | 3 +++ src/lib/lmsensor.c | 2 +- src/lib/psensor.c | 6 +++++- src/lib/psensor_json.c | 12 +++++++----- src/server/server.c | 2 +- 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/lib/hdd_atasmart.c b/src/lib/hdd_atasmart.c index 3c23509..402c92e 100644 --- a/src/lib/hdd_atasmart.c +++ b/src/lib/hdd_atasmart.c @@ -172,6 +172,9 @@ void atasmart_psensor_list_update(struct psensor **sensors) double c; SkDisk *disk; + if (!sensors) + return; + cur = sensors; while (*cur) { s = *cur; diff --git a/src/lib/lmsensor.c b/src/lib/lmsensor.c index 7551fc1..ca553f3 100644 --- a/src/lib/lmsensor.c +++ b/src/lib/lmsensor.c @@ -124,7 +124,7 @@ void lmsensor_psensor_list_update(struct psensor **sensors) struct psensor *s; double v; - if (!init_done) + if (!init_done || !sensors) return; while (*sensors) { diff --git a/src/lib/psensor.c b/src/lib/psensor.c index b84464c..f8c0a83 100644 --- a/src/lib/psensor.c +++ b/src/lib/psensor.c @@ -432,7 +432,10 @@ const char *psensor_type_to_unit_str(unsigned int type, int use_celsius) void psensor_log_measures(struct psensor **sensors) { - if (log_level == LOG_DEBUG) + if (log_level == LOG_DEBUG) { + if (!sensors) + return; + while (*sensors) { log_debug("Measure: %s %.2f", (*sensors)->name, @@ -440,6 +443,7 @@ void psensor_log_measures(struct psensor **sensors) sensors++; } + } } struct psensor **psensor_list_copy(struct psensor **sensors) diff --git a/src/lib/psensor_json.c b/src/lib/psensor_json.c index fcb0982..ca12fc2 100644 --- a/src/lib/psensor_json.c +++ b/src/lib/psensor_json.c @@ -119,14 +119,16 @@ char *sensors_to_json_string(struct psensor **sensors) char *str; json_object *obj = json_object_new_array(); - sensors_cur = sensors; + if (sensors) { + sensors_cur = sensors; - while (*sensors_cur) { - struct psensor *s = *sensors_cur; + while (*sensors_cur) { + struct psensor *s = *sensors_cur; - json_object_array_add(obj, sensor_to_json(s)); + json_object_array_add(obj, sensor_to_json(s)); - sensors_cur++; + sensors_cur++; + } } str = strdup(json_object_to_json_string(obj)); diff --git a/src/server/server.c b/src/server/server.c index 1e799ab..7e9736c 100644 --- a/src/server/server.c +++ b/src/server/server.c @@ -424,7 +424,7 @@ int main(int argc, char *argv[]) server_data.cpu_usage = create_cpu_usage_sensor(600); #endif - if (!*server_data.sensors) + if (!server_data.sensors || !*server_data.sensors) log_err(_("No sensors detected.")); d = MHD_start_daemon(MHD_USE_THREAD_PER_CONNECTION, -- 2.7.4