mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-30 13:30:57 +08:00
Fix 1.426, must sign-extend small numbers, not zero-pad
This commit is contained in:
parent
14573820ec
commit
b7f3bb05f5
@ -2161,13 +2161,17 @@ integerIndexer(
|
||||
rc = LDAP_INVALID_SYNTAX;
|
||||
goto leave;
|
||||
}
|
||||
/* If too small, pad with zeros */
|
||||
/* If too small, sign-extend */
|
||||
if ( iv.bv_len < index_intlen ) {
|
||||
int j, k;
|
||||
int j, k, pad;
|
||||
keys[i].bv_val[0] = index_intlen;
|
||||
if (iv.bv_val[0] & 0x80)
|
||||
pad = 0xff;
|
||||
else
|
||||
pad = 0;
|
||||
k = index_intlen - iv.bv_len + 1;
|
||||
for ( j=1; j<k; j++)
|
||||
keys[i].bv_val[j] = 0;
|
||||
keys[i].bv_val[j] = pad;
|
||||
for ( j = 0; j<iv.bv_len; j++ )
|
||||
keys[i].bv_val[j+k] = iv.bv_val[j];
|
||||
} else {
|
||||
|
Loading…
Reference in New Issue
Block a user