aboutsummaryrefslogtreecommitdiff
path: root/core/tee
diff options
context:
space:
mode:
authorJens Wiklander <jens.wiklander@linaro.org>2018-09-10 16:43:43 +0200
committerJérôme Forissier <jerome.forissier@linaro.org>2019-01-21 18:28:37 +0100
commit8f58cdbe41688b6d8a5e8b06bfaef1b64c51309f (patch)
treed4a3848f118974cfc0ad94721ba334fb5126298b /core/tee
parent4ca9e426d8d17f1e1b19ebfa782f7f914e4f6c53 (diff)
fs: prevent out of place write when no data
Fixes: "Uninitialized return value returned if len equals 0" as reported by Riscure. Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org> Tested-by: Joakim Bech <joakim.bech@linaro.org> (QEMU v7, v8) Reviewed-by: Joakim Bech <joakim.bech@linaro.org> Reported-by: Riscure <inforequest@riscure.com> Reported-by: Alyssa Milburn <a.a.milburn@vu.nl> Acked-by: Etienne Carriere <etienne.carriere@linaro.org>
Diffstat (limited to 'core/tee')
-rw-r--r--core/tee/tee_ree_fs.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/core/tee/tee_ree_fs.c b/core/tee/tee_ree_fs.c
index e55234d1..42c9a75f 100644
--- a/core/tee/tee_ree_fs.c
+++ b/core/tee/tee_ree_fs.c
@@ -96,6 +96,14 @@ static TEE_Result out_of_place_write(struct tee_fs_fd *fdp, size_t pos,
uint8_t *block;
struct tee_fs_htree_meta *meta = tee_fs_htree_get_meta(fdp->ht);
+ /*
+ * It doesn't make sense to call this function if nothing is to be
+ * written. This also guards against end_block_num getting an
+ * unexpected value when pos == 0 and len == 0.
+ */
+ if (!len)
+ return TEE_ERROR_BAD_PARAMETERS;
+
block = get_tmp_block();
if (!block)
return TEE_ERROR_OUT_OF_MEMORY;