From 5e6029322351b80c84068f80e04fb26cb4c6c583 Mon Sep 17 00:00:00 2001 From: "John \"Elwin\" Edwards" Date: Fri, 24 Nov 2017 16:22:10 -0500 Subject: [PATCH] UltraRogue: add a sanity check to do_fuses(). The d_id field, which indicates which fuse function to call, is now checked to make sure it is not out of range. do_daemons() already checks. --- urogue/daemon.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/urogue/daemon.c b/urogue/daemon.c index 841c55f..e3f2ccb 100644 --- a/urogue/daemon.c +++ b/urogue/daemon.c @@ -282,11 +282,18 @@ do_fuses(int now) { if (--wire->d_time <= 0) { - fuse_arg arg; + if (wire->d_id < 0 || wire->d_id >= FUSE_MAX) + printf("Bad fuse id %d\n", wire->d_id); + else if (fuses[wire->d_id].func == NULL) + printf("No action for fuse %d!\n", wire->d_id); + else + { + fuse_arg arg; - arg.varg = wire->d_arg; + arg.varg = wire->d_arg; + fuses[wire->d_id].func(&arg); + } wire->d_type = EMPTY; - fuses[wire->d_id].func(&arg); demoncnt -= 1; } }