Module Name: src Committed By: pgoyette Date: Sat May 5 00:14:28 UTC 2018
Modified Files: src/sys/dev/sysmon: sysmon_envsys.c Log Message: Defend against some table-lookup-not-found errors. To generate a diff of this commit: cvs rdiff -u -r1.141 -r1.142 src/sys/dev/sysmon/sysmon_envsys.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/sysmon/sysmon_envsys.c diff -u src/sys/dev/sysmon/sysmon_envsys.c:1.141 src/sys/dev/sysmon/sysmon_envsys.c:1.142 --- src/sys/dev/sysmon/sysmon_envsys.c:1.141 Mon Sep 11 06:02:09 2017 +++ src/sys/dev/sysmon/sysmon_envsys.c Sat May 5 00:14:28 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: sysmon_envsys.c,v 1.141 2017/09/11 06:02:09 pgoyette Exp $ */ +/* $NetBSD: sysmon_envsys.c,v 1.142 2018/05/05 00:14:28 pgoyette Exp $ */ /*- * Copyright (c) 2007, 2008 Juan Romero Pardines. @@ -64,7 +64,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: sysmon_envsys.c,v 1.141 2017/09/11 06:02:09 pgoyette Exp $"); +__KERNEL_RCSID(0, "$NetBSD: sysmon_envsys.c,v 1.142 2018/05/05 00:14:28 pgoyette Exp $"); #include <sys/param.h> #include <sys/types.h> @@ -1706,6 +1706,8 @@ sme_update_sensor_dictionary(prop_object * update sensor's type. */ sdt = sme_find_table_entry(SME_DESC_UNITS, edata->units); + if (sdt == NULL) + return EINVAL; DPRINTFOBJ(("%s: sensor #%d units=%d (%s)\n", __func__, edata->sensor, sdt->type, sdt->desc)); @@ -1784,6 +1786,8 @@ sme_update_sensor_dictionary(prop_object if (edata->units == ENVSYS_DRIVE) { sdt = sme_find_table_entry(SME_DESC_DRIVE_STATES, edata->value_cur); + if (sdt == NULL) + return EINVAL; error = sme_sensor_upstring(dict, "drive-state", sdt->desc); if (error) return error; @@ -1796,6 +1800,8 @@ sme_update_sensor_dictionary(prop_object if (edata->units == ENVSYS_BATTERY_CAPACITY) { sdt = sme_find_table_entry(SME_DESC_BATTERY_CAPACITY, edata->value_cur); + if (sdt == NULL) + return EINVAL; error = sme_sensor_upstring(dict, "battery-capacity", sdt->desc); if (error)