|
|
da1a85 |
From 9bc1e24859630c933410bfb77658bd69ee400e16 Mon Sep 17 00:00:00 2001
|
|
|
da1a85 |
From: Peter Jones <pjones@redhat.com>
|
|
|
da1a85 |
Date: Wed, 13 Jun 2018 09:25:58 -0400
|
|
|
da1a85 |
Subject: [PATCH 08/17] Make efidp_make_file() have even more, better input
|
|
|
da1a85 |
constraints.
|
|
|
da1a85 |
|
|
|
da1a85 |
This is all in the effort to convince coverity that it doesn't
|
|
|
da1a85 |
dereference buf when size==0, which it already doesn't.
|
|
|
da1a85 |
|
|
|
da1a85 |
Signed-off-by: Peter Jones <pjones@redhat.com>
|
|
|
da1a85 |
---
|
|
|
da1a85 |
src/dp-media.c | 6 ++++++
|
|
|
da1a85 |
src/dp.c | 10 +++++++++-
|
|
|
da1a85 |
2 files changed, 15 insertions(+), 1 deletion(-)
|
|
|
da1a85 |
|
|
|
da1a85 |
diff --git a/src/dp-media.c b/src/dp-media.c
|
|
|
da1a85 |
index cec6b8bb58d..96a576fdc2a 100644
|
|
|
da1a85 |
--- a/src/dp-media.c
|
|
|
da1a85 |
+++ b/src/dp-media.c
|
|
|
da1a85 |
@@ -162,6 +162,12 @@ efidp_make_file(uint8_t *buf, ssize_t size, char *filepath)
|
|
|
da1a85 |
ssize_t len = utf8len(lf, -1) + 1;
|
|
|
da1a85 |
ssize_t req = sizeof (*file) + len * sizeof (uint16_t);
|
|
|
da1a85 |
|
|
|
da1a85 |
+ if (len == 0) {
|
|
|
da1a85 |
+ errno = EINVAL;
|
|
|
da1a85 |
+ efi_error("%s() called with %s file path", __func__,
|
|
|
da1a85 |
+ filepath == NULL ? "NULL" : "empty");
|
|
|
da1a85 |
+ return -1;
|
|
|
da1a85 |
+ }
|
|
|
da1a85 |
sz = efidp_make_generic(buf, size, EFIDP_MEDIA_TYPE, EFIDP_MEDIA_FILE,
|
|
|
da1a85 |
req);
|
|
|
da1a85 |
if (size && sz == req) {
|
|
|
da1a85 |
diff --git a/src/dp.c b/src/dp.c
|
|
|
da1a85 |
index 4e76e25b1a1..82d60b4f9be 100644
|
|
|
da1a85 |
--- a/src/dp.c
|
|
|
da1a85 |
+++ b/src/dp.c
|
|
|
da1a85 |
@@ -443,9 +443,17 @@ efidp_make_generic(uint8_t *buf, ssize_t size, uint8_t type, uint8_t subtype,
|
|
|
da1a85 |
|
|
|
da1a85 |
if (!size)
|
|
|
da1a85 |
return total_size;
|
|
|
da1a85 |
+
|
|
|
da1a85 |
+ if (!buf) {
|
|
|
da1a85 |
+ errno = EINVAL;
|
|
|
da1a85 |
+ efi_error("%s was called with nonzero size and NULL buffer",
|
|
|
da1a85 |
+ __func__);
|
|
|
da1a85 |
+ return -1;
|
|
|
da1a85 |
+ }
|
|
|
da1a85 |
+
|
|
|
da1a85 |
if (size < total_size) {
|
|
|
da1a85 |
+ errno = ENOSPC;
|
|
|
da1a85 |
efi_error("total size is bigger than size limit");
|
|
|
da1a85 |
- errno = ENOSPC;
|
|
|
da1a85 |
return -1;
|
|
|
da1a85 |
}
|
|
|
da1a85 |
|
|
|
da1a85 |
--
|
|
|
da1a85 |
2.17.1
|
|
|
da1a85 |
|