cmd: ubi: check 'updating' before calling ubi_more_update_data()

If 0 is passed to the 'bytes' parameter in the ubi_start_update(),
there is no need to call the ubi_more_update_data(). Otherwise,
there will be a double-free of 'vol->upd_buf'.

Also check that the ubi_start_update() was called before calling
the ubi_more_update_data().

Signed-off-by: Martin Kurbanov <mmkurbanov@salutedevices.com>
This commit is contained in:
Martin Kurbanov 2024-06-16 16:34:18 +03:00 committed by Heiko Schocher
parent abae0b76f9
commit 27b169f9d0

View File

@ -362,6 +362,11 @@ static int ubi_volume_continue_write(char *volume, void *buf, size_t size)
if (vol == NULL)
return ENODEV;
if (!vol->updating) {
printf("UBI volume update was not initiated\n");
return EINVAL;
}
err = ubi_more_update_data(ubi, vol, buf, size);
if (err < 0) {
printf("Couldnt or partially wrote data\n");
@ -411,6 +416,10 @@ int ubi_volume_begin_write(char *volume, void *buf, size_t size,
return -err;
}
/* The volume is just wiped out */
if (!full_size)
return 0;
return ubi_volume_continue_write(volume, buf, size);
}