From 9d6440e0f95c9c507f089c761eaf33dbc20de19c Mon Sep 17 00:00:00 2001
From: Timo Juhani Lindfors <timo.lindfors@iki.fi>
Date: Fri, 11 Nov 2011 23:05:36 +0200
Subject: [PATCH] Fix bug introduced in f407b0626f0160fa8cca67c548c8de38c8353e16

initramfs_len is unsigned so we can not assign return value of
read_file to it without checking for negative values that indicate
errors.
---
 src/phase2.c |   15 ++++++++++-----
 1 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/phase2.c b/src/phase2.c
index 8d7934e..9feb730 100644
--- a/src/phase2.c
+++ b/src/phase2.c
@@ -430,13 +430,18 @@ static void try_this_kernel(void)
 
 	if (this_kernel->initramfs_filepath) {
 		indicate(UI_IND_INITRAMFS_PULL);
-		initramfs_len = read_file(this_kernel->initramfs_filepath,
+		ret = read_file(this_kernel->initramfs_filepath,
 		      (u8 *)this_board->linux_mem_start + INITRD_OFFSET,
 						      16 * 1024 * 1024);
-		if (initramfs_len != -ENOENT) {
-			puts("initramfs load failed\n");
-			indicate(UI_IND_INITRAMFS_PULL_FAIL);
-			return;
+		if (ret <= 0) {
+			initramfs_len = 0;
+			if (ret != -ENOENT) {
+				puts("initramfs load failed\n");
+				indicate(UI_IND_INITRAMFS_PULL_FAIL);
+				return;
+			}
+		} else {
+			initramfs_len = ret;
 		}
 		indicate(UI_IND_INITRAMFS_PULL_OK);
 	}
-- 
1.7.2.5

