mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-03-07 14:18:15 +08:00
ITS#8864 Fix ber_realloc after a partial ber_flush
This commit is contained in:
parent
eb087e0861
commit
fb49d486a3
@ -128,7 +128,7 @@ ber_write(
|
||||
int
|
||||
ber_realloc( BerElement *ber, ber_len_t len )
|
||||
{
|
||||
ber_len_t total, offset, sos_offset;
|
||||
ber_len_t total, offset, sos_offset, rw_offset;
|
||||
char *buf;
|
||||
|
||||
assert( ber != NULL );
|
||||
@ -165,6 +165,7 @@ ber_realloc( BerElement *ber, ber_len_t len )
|
||||
offset = ber->ber_ptr - buf;
|
||||
sos_offset = ber->ber_sos_ptr ? ber->ber_sos_ptr - buf : 0;
|
||||
/* if ber_sos_ptr != NULL, it is > ber_buf so that sos_offset > 0 */
|
||||
rw_offset = ber->ber_rwptr ? ber->ber_rwptr - buf : 0;
|
||||
|
||||
buf = (char *) ber_memrealloc_x( buf, total, ber->ber_memctx );
|
||||
if ( buf == NULL ) {
|
||||
@ -176,6 +177,8 @@ ber_realloc( BerElement *ber, ber_len_t len )
|
||||
ber->ber_ptr = buf + offset;
|
||||
if ( sos_offset )
|
||||
ber->ber_sos_ptr = buf + sos_offset;
|
||||
if ( ber->ber_rwptr )
|
||||
ber->ber_rwptr = buf + rw_offset;
|
||||
|
||||
return( 0 );
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user