From b23af1223e0a284a6dd603ed21c60612170d6767 Mon Sep 17 00:00:00 2001 From: renoseven Date: Mon, 18 Dec 2023 18:34:52 +0800 Subject: [PATCH 08/15] upatch: check build id Signed-off-by: renoseven --- upatch/upatch-tool/upatch-resolve.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/upatch/upatch-tool/upatch-resolve.c b/upatch/upatch-tool/upatch-resolve.c index d12bdae..aeb655c 100644 --- a/upatch/upatch-tool/upatch-resolve.c +++ b/upatch/upatch-tool/upatch-resolve.c @@ -65,18 +65,22 @@ struct list_head* patch_symbols_resolve(const char *target_elf, const char *patc INIT_LIST_HEAD(head); int ret = upatch_init(&uelf, patch_file); - if (ret < 0) { log_warn("upatch-resolve: upatch_init failed\n"); goto out; } ret = binary_init(&relf, target_elf); - if (ret) { + if (ret < 0) { log_warn("upatch-resolve: binary_init failed %d \n", ret); goto out; } + if (check_build_id(&uelf.info, &relf.info) == false) { + log_error("upatch-resolve: Build id mismatched!\n"); + goto out; + } + uelf.relf = &relf; upatch_shdr = &uelf.info.shdrs[uelf.index.upatch_funcs]; upatch_funcs = uelf.info.patch_buff + upatch_shdr->sh_offset; -- 2.33.0