<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p><br>
    </p>
    <br>
    <div class="moz-cite-prefix">On 04/26/2018 04:26 PM, Colin King
      wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:20180426082639.25299-1-colin.king@canonical.com">
      <pre wrap="">From: Colin Ian King <a class="moz-txt-link-rfc2396E" href="mailto:colin.king@canonical.com"><colin.king@canonical.com></a>

Check for non-null info->type before dereferencing it with a strcmp.

Detected by CoverityScan, CID#1390651 ("Null pointer dereferences")

Fixes: 0eb85f83c260 ("fan: cur_state == -1 is valid for intel_powerclamp")
Signed-off-by: Colin Ian King <a class="moz-txt-link-rfc2396E" href="mailto:colin.king@canonical.com"><colin.king@canonical.com></a>
---
 src/acpi/fan/fan.c | 23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/src/acpi/fan/fan.c b/src/acpi/fan/fan.c
index 298d3a13..edd947e8 100644
--- a/src/acpi/fan/fan.c
+++ b/src/acpi/fan/fan.c
@@ -154,16 +154,19 @@ static int fan_test1(fwts_framework *fw)
                        fwts_failed(fw, LOG_LEVEL_MEDIUM, "NoFanMaxState",
                                "Fan %s present but has no max_state present.",
                                info->name);
-               if (info->cur_state == -1 && strcmp(info->type, "intel_powerclamp"))
-                       fwts_failed(fw, LOG_LEVEL_MEDIUM, "NoFanCurState",
-                               "Fan %s present but has no cur_state present.",
-                               info->name);
-
-               if (info->type &&
-                   (info->max_state >= 0) && (info->cur_state >= 0))
-                       fwts_passed(fw, "Fan %s of type %s has max cooling state %d "
-                               "and current cooling state %d.",
-                                       info->name, info->type, info->max_state, info->cur_state);
+               if (info->type) {
+                       if ((info->cur_state == -1) &&
+                           strcmp(info->type, "intel_powerclamp"))
+                               fwts_failed(fw, LOG_LEVEL_MEDIUM, "NoFanCurState",
+                                       "Fan %s present but has no cur_state present.",
+                                       info->name);
+
+                       if ((info->max_state >= 0) && (info->cur_state >= 0))
+                               fwts_passed(fw, "Fan %s of type %s has max cooling "
+                                       "state %d and current cooling state %d.",
+                                       info->name, info->type, info->max_state,
+                                       info->cur_state);
+               }
        }
 
        fwts_list_free(fans, free_fan_info);
</pre>
    </blockquote>
    <br>
    Acked-by: Ivan Hu <a class="moz-txt-link-rfc2396E"
      href="mailto:ivan.hu@canonical.com"><ivan.hu@canonical.com></a>
  </body>
</html>