child-cfg: Fix apply_jitter() in case jitter is bigger than rekey value
Also avoid returning 0 and disabling rekeying in the rare case of `jitter = rekey` and the `1/jitter` chance of that happening (returning 1 at least doesn't disable rekeying). Co-authored-by: Tobias Brunner <[email protected]> Closes strongswan/strongswan#1414
This commit is contained in:
committed by
Tobias Brunner
co-authored by
Tobias Brunner
parent
44378d2521
commit
b450865615
@@ -435,7 +435,7 @@ static uint64_t apply_jitter(uint64_t rekey, uint64_t jitter)
|
|||||||
return rekey;
|
return rekey;
|
||||||
}
|
}
|
||||||
jitter = (jitter == UINT64_MAX) ? jitter : jitter + 1;
|
jitter = (jitter == UINT64_MAX) ? jitter : jitter + 1;
|
||||||
return rekey - jitter * (random() / (RAND_MAX + 1.0));
|
return rekey - (uint64_t)(min(jitter, rekey) * (random() / (RAND_MAX + 1.0)));
|
||||||
}
|
}
|
||||||
#define APPLY_JITTER(l) l.rekey = apply_jitter(l.rekey, l.jitter)
|
#define APPLY_JITTER(l) l.rekey = apply_jitter(l.rekey, l.jitter)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user