From 32f6b0d5974e39dbcce89d9ab8551e35eb8fdaab Mon Sep 17 00:00:00 2001 From: Peter Jones Date: Mon, 1 May 2017 15:14:33 -0400 Subject: [PATCH 15/22] efidp_duplicate_extra(): error if our allocation is too small. Covscan believes we might pass 0 to calloc(), though I suspect this is because it doesn't fully grok add(). Signed-off-by: Peter Jones --- src/dp.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/dp.c b/src/dp.c index e700af9..eadb397 100644 --- a/src/dp.c +++ b/src/dp.c @@ -81,6 +81,12 @@ efidp_duplicate_extra(const_efidp dp, efidp *out, size_t extra) return -1; } + if (plus < (ssize_t)sizeof(efidp_header)) { + errno = EINVAL; + efi_error("allocation for new device path is smaller than device path header."); + return -1; + } + new = calloc(1, plus); if (!new) { efi_error("allocation failed"); -- 2.12.2