Module Name:    src
Committed By:   martin
Date:           Sun Jun 19 11:40:26 UTC 2011

Modified Files:
        src/sys/dev/sysmon: sysmon_envsys.c

Log Message:
Instead of crashing, print a usable error message when a driver eroneously
does not properly initialize sensor state.


To generate a diff of this commit:
cvs rdiff -u -r1.115 -r1.116 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.115 src/sys/dev/sysmon/sysmon_envsys.c:1.116
--- src/sys/dev/sysmon/sysmon_envsys.c:1.115	Wed Jun 15 13:34:13 2011
+++ src/sys/dev/sysmon/sysmon_envsys.c	Sun Jun 19 11:40:26 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: sysmon_envsys.c,v 1.115 2011/06/15 13:34:13 pgoyette Exp $	*/
+/*	$NetBSD: sysmon_envsys.c,v 1.116 2011/06/19 11:40:26 martin 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.115 2011/06/15 13:34:13 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sysmon_envsys.c,v 1.116 2011/06/19 11:40:26 martin Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -1535,6 +1535,11 @@
 	int error = 0;
 
 	sdt = sme_find_table_entry(SME_DESC_STATES, edata->state);
+	if (sdt == NULL) {
+		printf("sme_update_sensor_dictionary: can not update sensor "
+		    "state %d unknown\n", edata->state);
+		return EINVAL;
+	}
 
 	DPRINTFOBJ(("%s: sensor #%d type=%d (%s) flags=%d\n", __func__,
 	    edata->sensor, sdt->type, sdt->desc, edata->flags));

Reply via email to