efi_loader: avoid out of bound access in efi_get_variable()
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Sun, 23 Sep 2018 02:08:09 +0000 (04:08 +0200)
committerAlexander Graf <agraf@suse.de>
Sun, 23 Sep 2018 19:55:31 +0000 (21:55 +0200)
In efi_get_variable() a string is longer than the allocated space which
results in overwriting the linked list of malloc().

The prefixes used for variables are 41 characters long, e.g.
efi_67029eb5-0af2-f6b1-da53-fcb566dd1ce6_

Change PREFIX_LEN to 41.

Fixes: faff21556748 ("efi_loader: remove limit on variable length")
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Signed-off-by: Alexander Graf <agraf@suse.de>
lib/efi_loader/efi_variable.c

index 495738884b8a6fc9b401bc4592374aa882e1e3d4..a1313fa2158cff1d376c7d84bc6d82796222233d 100644 (file)
@@ -44,7 +44,7 @@
  * converted to utf16?
  */
 
-#define PREFIX_LEN (strlen("efi_xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx_"))
+#define PREFIX_LEN (strlen("efi_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_"))
 
 static int hex(int ch)
 {