comparison urogue/daemon.c @ 289:d815c40c3753

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.
author John "Elwin" Edwards
date Fri, 24 Nov 2017 16:22:10 -0500
parents c495a4f288c6
children
comparison
equal deleted inserted replaced
288:b8919055c2fc 289:d815c40c3753
280 280
281 if( (wire->d_type == FUSE) && (wire->d_when == now) ) 281 if( (wire->d_type == FUSE) && (wire->d_when == now) )
282 { 282 {
283 if (--wire->d_time <= 0) 283 if (--wire->d_time <= 0)
284 { 284 {
285 fuse_arg arg; 285 if (wire->d_id < 0 || wire->d_id >= FUSE_MAX)
286 286 printf("Bad fuse id %d\n", wire->d_id);
287 arg.varg = wire->d_arg; 287 else if (fuses[wire->d_id].func == NULL)
288 printf("No action for fuse %d!\n", wire->d_id);
289 else
290 {
291 fuse_arg arg;
292
293 arg.varg = wire->d_arg;
294 fuses[wire->d_id].func(&arg);
295 }
288 wire->d_type = EMPTY; 296 wire->d_type = EMPTY;
289 fuses[wire->d_id].func(&arg);
290 demoncnt -= 1; 297 demoncnt -= 1;
291 } 298 }
292 } 299 }
293 300
294 } 301 }