From: Martin Kurbanov Date: Sun, 16 Jun 2024 13:34:18 +0000 (+0300) Subject: cmd: ubi: check 'updating' before calling ubi_more_update_data() X-Git-Url: http://git.dujemihanovic.xyz/html/static/gitweb.css?a=commitdiff_plain;h=27b169f9d0bed978bea1d86ab8d584da6ada54d0;p=u-boot.git 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 --- diff --git a/cmd/ubi.c b/cmd/ubi.c index 287da345c1..92998af2b0 100644 --- a/cmd/ubi.c +++ b/cmd/ubi.c @@ -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); }