From f1263a42929e1fbc7cfefb06434ac51e7eea80d9 Mon Sep 17 00:00:00 2001 From: Artem Savkov Date: Thu, 1 Aug 2019 11:43:33 +0200 Subject: [PATCH] create-diff-object: section size check in rela_insn() Without this check we are risking returning uninitialized insn var. Signed-off-by: Artem Savkov --- kpatch-build/create-diff-object.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kpatch-build/create-diff-object.c b/kpatch-build/create-diff-object.c index b04a0bd..b1118c9 100644 --- a/kpatch-build/create-diff-object.c +++ b/kpatch-build/create-diff-object.c @@ -1238,6 +1238,10 @@ static void rela_insn(struct section *sec, struct rela *rela, struct insn *insn) start = (unsigned long)sec->base->data->d_buf; end = start + sec->base->sh.sh_size; + + if (end <= start) + ERROR("bad section size"); + rela_addr = start + rela->offset; for (insn_addr = start; insn_addr < end; insn_addr += insn->length) { insn_init(insn, (void *)insn_addr, 1);