Protect against stupid data from ACPI
authorHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Mon, 22 Oct 2012 12:57:56 +0000 (14:57 +0200)
committerHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Mon, 22 Oct 2012 12:57:56 +0000 (14:57 +0200)
    Coverity:

    CID 739643 (#1 of 1): Division or modulo by zero (DIVIDE_BY_ZERO)
    At (29): In expression "bat_val * 100 / bat_max", division by expression "bat_max" which may be zero has undefined behavior.

Signed-off-by: Henning Rogge <henning.rogge@fkie.fraunhofer.de>
src/linux/apm.c

index 9be7b76..8848acf 100644 (file)
@@ -271,9 +271,15 @@ apm_read_acpi(struct olsr_apm_info *ainfo)
 
   ainfo->ac_line_status = ac_power_on ? OLSR_AC_POWERED : OLSR_BATTERY_POWERED;
 
-  result = bat_val * 100 / bat_max;
+  if (bat_max == 0) {
+    /* protection against stupid acpi data */
+    ainfo->battery_percentage = 0;
+  }
+  else {
+    result = bat_val * 100 / bat_max;
 
-  ainfo->battery_percentage = result > 100 ? 100 : result;
+    ainfo->battery_percentage = result > 100 ? 100 : result;
+  }
 
   return 1;
 }