summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--futility/file_type_rwsig.c3
-rw-r--r--tests/futility/data/short_junk.bin1
-rwxr-xr-xtests/futility/test_file_types.sh1
3 files changed, 4 insertions, 1 deletions
diff --git a/futility/file_type_rwsig.c b/futility/file_type_rwsig.c
index e50ff32f..b9c9e216 100644
--- a/futility/file_type_rwsig.c
+++ b/futility/file_type_rwsig.c
@@ -226,7 +226,8 @@ enum futil_file_type ft_recognize_rwsig(uint8_t *buf, uint32_t len)
if (!vb2_verify_signature((const struct vb2_signature *)buf, len))
return FILE_TYPE_RWSIG;
- if (!vb2_verify_signature((const struct vb2_signature *)
+ if (len >= SIGNATURE_RSVD_SIZE &&
+ !vb2_verify_signature((const struct vb2_signature *)
(buf + len - SIGNATURE_RSVD_SIZE),
SIGNATURE_RSVD_SIZE))
return FILE_TYPE_RWSIG;
diff --git a/tests/futility/data/short_junk.bin b/tests/futility/data/short_junk.bin
new file mode 100644
index 00000000..dc765c3d
--- /dev/null
+++ b/tests/futility/data/short_junk.bin
@@ -0,0 +1 @@
+JUNK
diff --git a/tests/futility/test_file_types.sh b/tests/futility/test_file_types.sh
index 8acbcf72..470d6313 100755
--- a/tests/futility/test_file_types.sh
+++ b/tests/futility/test_file_types.sh
@@ -26,6 +26,7 @@ fail_case() {
}
# Known types
+test_case "unknown" "tests/futility/data/short_junk.bin"
test_case "unknown" "tests/futility/data/random_noise.bin"
test_case "pubkey" "tests/devkeys/root_key.vbpubk"
test_case "keyblock" "tests/devkeys/kernel.keyblock"