+       do {
+               ngen = arc4random_uniform(INT_MAX) + 1;
+       } while (DIP(ip, gen) == ngen);

arc4random_uniform contains a potential loop (approx 1 in 4billion)
for uniform resolution, and this wraps it with another loop (approx 1
in 4billion).

I'd really prefer to see a construct which doesn't do that.  But
I don't know if that would result in something really complex.

> signed integer, it may overflow, causing undefined behavior

The development of OpenBSD/univac is running way behind schedule.

Reply via email to