[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:
Luis Machado
2023-08-11 07:54:25 +01:00
parent 459784def0
commit e4c78b3b86

View File

@@ -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;
}
}