Browse Source

Add a sanity check to avoid divide by zero crashes in set_target

Con Kolivas 12 years ago
parent
commit
e95b42ea54
1 changed files with 6 additions and 0 deletions
  1. 6 0
      cgminer.c

+ 6 - 0
cgminer.c

@@ -5926,6 +5926,12 @@ void set_target(unsigned char *dest_target, double diff)
 	uint64_t *data64, h64;
 	uint64_t *data64, h64;
 	double d64, dcut64;
 	double d64, dcut64;
 
 
+	if (unlikely(diff == 0.0)) {
+		/* This shouldn't happen but best we check to prevent a crash */
+		applog(LOG_ERR, "Diff zero passed to set_target");
+		diff = 1.0;
+	}
+
 	d64 = truediffone;
 	d64 = truediffone;
 	if (opt_scrypt)
 	if (opt_scrypt)
 		d64 *= (double)65536;
 		d64 *= (double)65536;