Howard Chu writes:I think you misunderstood.
No, I wrote too briefly.
No matter what you're actually testing for, there is no way you're going to get a TRUE result from comparing ( signed 32 bit integer > 0x7fffffff ).
Right, and chop <= (max ber_len_t)/2.3333 so the test is a no-op on 32-bit hosts. But on 64-bit hosts, chop can be an 8-byte integer which would require the first byte in the output key to hold 10 bits: inverse sign bit, 8 more bits (one for each chop byte), final sign bit.
If you simply rewrote the test it would eliminate all ambiguity.
>>If it is actually possible for ( chop * 3 > 0x7fffffff ) then this >> test won't detect that fact. You need to test for >> ( chop > 0x7fffffff / 3 )