Fix sysupgrade(8) buffer overflowing on more than 16 installations.
This commit is contained in:
parent
516c15d69e
commit
ad8e17a968
|
@ -80,15 +80,15 @@ static bool add_installation(struct blockdevice* bdev,
|
||||||
{
|
{
|
||||||
if ( installations_count == installations_length )
|
if ( installations_count == installations_length )
|
||||||
{
|
{
|
||||||
size_t new_length = installations_length;
|
size_t length = installations_length;
|
||||||
if ( !new_length )
|
if ( !length )
|
||||||
new_length = 16;
|
length = 8;
|
||||||
struct installation* new_installations = (struct installation*)
|
struct installation* new_installations = (struct installation*)
|
||||||
reallocarray(NULL, new_length, sizeof(struct installation));
|
reallocarray(NULL, length, 2 * sizeof(struct installation));
|
||||||
if ( !new_installations )
|
if ( !new_installations )
|
||||||
return false;
|
return false;
|
||||||
installations = new_installations;
|
installations = new_installations;
|
||||||
installations_length = new_length;
|
installations_length = 2 * length;
|
||||||
}
|
}
|
||||||
struct installation* installation = &installations[installations_count++];
|
struct installation* installation = &installations[installations_count++];
|
||||||
installation->bdev = bdev;
|
installation->bdev = bdev;
|
||||||
|
|
Loading…
Reference in New Issue