Permalink
Browse files

Made sure code generator loop always terminates

It never did more than 176 iterations for first 10,000,000 heights, so I set fail-safe at 256 iterations.
  • Loading branch information...
SChernykh committed Feb 10, 2019
1 parent c2dc87d commit a98d4e61441b88f196adcf83e0dc24a84a699b59
Showing with 7 additions and 0 deletions.
  1. +7 −0 src/crypto/variant4_random_math.h
@@ -233,10 +233,17 @@ static inline int v4_random_math_init(struct V4_Instruction* code, const uint64_
int num_retries = 0;
code_size = 0;

int total_iterations = 0;

// Generate random code to achieve minimal required latency for our abstract CPU
// Try to get this latency for all 4 registers
while (((latency[0] < TOTAL_LATENCY) || (latency[1] < TOTAL_LATENCY) || (latency[2] < TOTAL_LATENCY) || (latency[3] < TOTAL_LATENCY)) && (num_retries < 64))
{
// Fail-safe to guarantee loop termination
++total_iterations;
if (total_iterations > 256)
break;

check_data(&data_index, 1, data, sizeof(data));

const uint8_t c = ((uint8_t*)data)[data_index++];

0 comments on commit a98d4e6

Please sign in to comment.