mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-26 09:08:59 +00:00
[Morello/gdbserver] Fix incorrect vector resize operation
This patch fixes an incorrect vector resize operation when reading the auxv. A mistake makes the current code copy data over the end of the vector buffer, leading to memory corruption. Fix this by having a pointer to the end of the vector buffer before resizing the took place.
This commit is contained in:
@@ -5788,14 +5788,17 @@ linux_process_target::get_auxv ()
|
||||
}
|
||||
else if (n < block_size)
|
||||
{
|
||||
/* We're done reading data. */
|
||||
/* We're done reading data. Shrink the vector to fit the right size
|
||||
of the auxv data. */
|
||||
auxv.resize (auxv.size () - (block_size - n));
|
||||
done = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Enlarge the vector so we can fit another chunk of auxv data. */
|
||||
size_t old_size = auxv.size ();
|
||||
auxv.resize (auxv.size () + block_size);
|
||||
ptr = auxv.data () + auxv.size ();
|
||||
ptr = auxv.data () + old_size;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user