gh-71810: Fix _PyLong_AsByteArray() undefined behavior (#138873)
Don't read p[-1] when p is an empty string: when n==0.
This commit is contained in:
@@ -1214,8 +1214,14 @@ _PyLong_AsByteArray(PyLongObject* v,
|
||||
just above didn't get to ensure there's a sign bit, and the
|
||||
loop below wouldn't add one either. Make sure a sign bit
|
||||
exists. */
|
||||
unsigned char msb = *(p - pincr);
|
||||
int sign_bit_set = msb >= 0x80;
|
||||
int sign_bit_set;
|
||||
if (n > 0) {
|
||||
unsigned char msb = *(p - pincr);
|
||||
sign_bit_set = msb >= 0x80;
|
||||
}
|
||||
else {
|
||||
sign_bit_set = 0;
|
||||
}
|
||||
assert(accumbits == 0);
|
||||
if (sign_bit_set == do_twos_comp)
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user