fixed coredump when there are no sensors
authorJean-Philippe Orsini <jeanfi@gmail.com>
Wed, 8 Jun 2016 12:22:42 +0000 (14:22 +0200)
committerJean-Philippe Orsini <jeanfi@gmail.com>
Wed, 8 Jun 2016 12:22:42 +0000 (14:22 +0200)
src/lib/hdd_atasmart.c
src/lib/lmsensor.c
src/lib/psensor.c
src/lib/psensor_json.c
src/server/server.c

index 3c23509..402c92e 100644 (file)
@@ -172,6 +172,9 @@ void atasmart_psensor_list_update(struct psensor **sensors)
        double c;
        SkDisk *disk;
 
        double c;
        SkDisk *disk;
 
+       if (!sensors)
+               return;
+
        cur = sensors;
        while (*cur) {
                s = *cur;
        cur = sensors;
        while (*cur) {
                s = *cur;
index 7551fc1..ca553f3 100644 (file)
@@ -124,7 +124,7 @@ void lmsensor_psensor_list_update(struct psensor **sensors)
        struct psensor *s;
        double v;
 
        struct psensor *s;
        double v;
 
-       if (!init_done)
+       if (!init_done || !sensors)
                return;
 
        while (*sensors) {
                return;
 
        while (*sensors) {
index b84464c..f8c0a83 100644 (file)
@@ -432,7 +432,10 @@ const char *psensor_type_to_unit_str(unsigned int type, int use_celsius)
 
 void psensor_log_measures(struct psensor **sensors)
 {
 
 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,
                while (*sensors) {
                        log_debug("Measure: %s %.2f",
                                   (*sensors)->name,
@@ -440,6 +443,7 @@ void psensor_log_measures(struct psensor **sensors)
 
                        sensors++;
                }
 
                        sensors++;
                }
+       }
 }
 
 struct psensor **psensor_list_copy(struct psensor **sensors)
 }
 
 struct psensor **psensor_list_copy(struct psensor **sensors)
index fcb0982..ca12fc2 100644 (file)
@@ -119,14 +119,16 @@ char *sensors_to_json_string(struct psensor **sensors)
        char *str;
        json_object *obj = json_object_new_array();
 
        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));
        }
 
        str = strdup(json_object_to_json_string(obj));
index 1e799ab..7e9736c 100644 (file)
@@ -424,7 +424,7 @@ int main(int argc, char *argv[])
        server_data.cpu_usage = create_cpu_usage_sensor(600);
 #endif
 
        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,
                log_err(_("No sensors detected."));
 
        d = MHD_start_daemon(MHD_USE_THREAD_PER_CONNECTION,