31 lines
906 B
Diff
31 lines
906 B
Diff
|
From f9ff4a203b8c155d51a208cadadb62f224fba715 Mon Sep 17 00:00:00 2001
|
||
|
From: Oliver Giles <ohw.giles@gmail.com>
|
||
|
Date: Mon, 1 Feb 2021 10:18:17 +1300
|
||
|
Subject: [PATCH] Ensure the size of the version field is 4 bytes
|
||
|
|
||
|
A corrupted version field size can cause TNEFVersion to access outside
|
||
|
of allocated memory. Check the version is the expected size and raise
|
||
|
an error if not.
|
||
|
|
||
|
Resolves: #86
|
||
|
Reported-by: jasperla
|
||
|
---
|
||
|
lib/ytnef.c | 4 ++++
|
||
|
1 file changed, 4 insertions(+)
|
||
|
|
||
|
diff --git a/lib/ytnef.c b/lib/ytnef.c
|
||
|
index b148719..ffede44 100644
|
||
|
--- a/lib/ytnef.c
|
||
|
+++ b/lib/ytnef.c
|
||
|
@@ -335,6 +335,10 @@ int TNEFRendData STD_ARGLIST {
|
||
|
int TNEFVersion STD_ARGLIST {
|
||
|
WORD major;
|
||
|
WORD minor;
|
||
|
+ if (size != 2 * sizeof(WORD)) {
|
||
|
+ printf("Incorrect size of version field, suspected corruption\n");
|
||
|
+ return -1;
|
||
|
+ }
|
||
|
minor = SwapWord((BYTE*)data, size);
|
||
|
major = SwapWord((BYTE*)data + 2, size - 2);
|
||
|
|