diff --git a/driver-klondike.c b/driver-klondike.c index dcdd671c..0d6d157f 100644 --- a/driver-klondike.c +++ b/driver-klondike.c @@ -695,17 +695,32 @@ static bool klondike_init(struct cgpu_info *klncgpu) // boundaries are checked by device, with valid values returned if (opt_klondike_options != NULL) { - int hashclock; + int hashclock, fantarget; double temp1, temp2; - sscanf(opt_klondike_options, "%d:%lf:%lf:%"SCNu8, + sscanf(opt_klondike_options, "%d:%lf:%lf:%d", &hashclock, &temp1, &temp2, - &kline.cfg.fantarget); + &fantarget); SET_HASHCLOCK(kline.cfg.hashclock, hashclock); kline.cfg.temptarget = cvtCToKln(temp1); kline.cfg.tempcritical = cvtCToKln(temp2); - kline.cfg.fantarget = (int)255*kline.cfg.fantarget/100; + if (fantarget < 0) { + applog(LOG_WARNING, + "%s%i: %s options invalid fantarget < 0 using 0", + klncgpu->drv->name, + klncgpu->device_id, + klncgpu->drv->dname); + fantarget = 0; + } else if (fantarget > 100) { + applog(LOG_WARNING, + "%s%i: %s options invalid fantarget > 100 using 100", + klncgpu->drv->name, + klncgpu->device_id, + klncgpu->drv->dname); + fantarget = 100; + } + kline.cfg.fantarget = (int)(255 * fantarget / 100); size = sizeof(kline.cfg) - 2; }