Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/usr.sbin/powerd powerd: Stop crashing if entries are not fou...
details: https://anonhg.NetBSD.org/src/rev/b1a262b15274
branches: trunk
changeset: 940650:b1a262b15274
user: roy <roy%NetBSD.org@localhost>
date: Mon Oct 12 16:54:43 2020 +0000
description:
powerd: Stop crashing if entries are not found in the dictionary
If the first three are not found, log a diagnostic and do nothing.
If the latter two are not found, set them to NULL rather than garbage.
diffstat:
usr.sbin/powerd/powerd.c | 29 ++++++++++++++++++++++-------
1 files changed, 22 insertions(+), 7 deletions(-)
diffs (49 lines):
diff -r b9d973d311ed -r b1a262b15274 usr.sbin/powerd/powerd.c
--- a/usr.sbin/powerd/powerd.c Mon Oct 12 16:27:23 2020 +0000
+++ b/usr.sbin/powerd/powerd.c Mon Oct 12 16:54:43 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: powerd.c,v 1.19 2020/06/07 05:54:00 thorpej Exp $ */
+/* $NetBSD: powerd.c,v 1.20 2020/10/12 16:54:43 roy Exp $ */
/*
* Copyright (c) 2003 Wasabi Systems, Inc.
@@ -325,18 +325,33 @@
__func__, error);
return;
}
-
+
if (debug) {
buf = prop_dictionary_externalize(dict);
printf("%s", buf);
free(buf);
}
- prop_dictionary_get_string(dict, "powerd-script-name", &argv[0]);
- prop_dictionary_get_string(dict, "driver-name", &argv[1]);
- prop_dictionary_get_string(dict, "powerd-event-name", &argv[2]);
- prop_dictionary_get_string(dict, "sensor-name", &argv[3]);
- prop_dictionary_get_string(dict, "state-description", &argv[4]);
+ /* First three arguments are not optional. */
+ if (!prop_dictionary_get_string(dict, "powerd-script-name", &argv[0])) {
+ powerd_log(LOG_ERR, "dict does not have powerd-script-name");
+ return;
+ }
+ if (!prop_dictionary_get_string(dict, "driver-name", &argv[1])) {
+ powerd_log(LOG_ERR, "dict does not have driver-name");
+ return;
+ }
+ if (!prop_dictionary_get_string(dict, "powerd-event-name", &argv[2])) {
+ powerd_log(LOG_ERR, "dict does not have powerd-event-name");
+ return;
+ }
+
+ /* These arguments are optional. */
+ if (!prop_dictionary_get_string(dict, "sensor-name", &argv[3]))
+ argv[3] = NULL;
+ if (!prop_dictionary_get_string(dict, "state-description", &argv[4]))
+ argv[4] = NULL;
+
argv[5] = NULL;
run_script(argv);
Home |
Main Index |
Thread Index |
Old Index