summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xetc/rc.initial.firmware_update17
1 files changed, 17 insertions, 0 deletions
diff --git a/etc/rc.initial.firmware_update b/etc/rc.initial.firmware_update
index 74ee6e4..749207e 100755
--- a/etc/rc.initial.firmware_update
+++ b/etc/rc.initial.firmware_update
@@ -38,7 +38,24 @@ switch ($command) {
$url = chop(fgets($fp));
$status = does_url_exist($url);
if($status) {
+ echo "\nFetching file...\n";
exec("fetch -v -o /tmp/firmware.tgz \"$url\"");
+ $status = does_url_exist("$url.md5");
+ if($status) {
+ echo "\nFetching MD5...\n";
+ exec("fetch -v -o /tmp/firmware.tgz.md5 \"$url.md5\"");
+ }
+ if(file_exists("/tmp/firmware.tgz.md5")) {
+ $source_md5 = trim(`cat /tmp/firmware.tgz.md5 | awk '{ print \$4 }'`,"\r");
+ $file_md5 = trim(`md5 /tmp/firmware.tgz | awk '{ print \$4 }'`,"\r");
+ if($source_md5 <> $file_md5) {
+ echo "\nURL MD5: $source_md5";
+ echo "\nDownloaded file MD5: $file_md5";
+ echo "\n\nMD5 checksum does not match. Cancelling upgrade.\n\n";
+ die -1;
+ }
+ echo "\nMD5 checksum matches.\n";
+ }
if(file_exists("/tmp/firmware.tgz"))
do_upgrade("/tmp/firmware.tgz");
} else {
OpenPOWER on IntegriCloud