components/shim/patches/02-shim.patch
author Ann Lai <ann.lai@oracle.com>
Tue, 01 Nov 2016 12:25:39 -0700
changeset 7222 37e367b978c0
permissions -rw-r--r--
23300489 Add shim to Userland PSARC 2015/563
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7222
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
     1
# Source: Internal
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
     2
# Info: Written internally so this component can be built and run on Solaris.
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
     3
# Status: This patch is offered at https://github.com/rhinstaller/shim/issues/54
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
     4
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
     5
--- ORIGINAL/shim.c	2016-06-24 03:08:17.837273349 +0000
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
     6
+++ shim-0.9/shim.c	2016-08-01 21:16:42.359585949 +0000
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
     7
@@ -53,6 +53,11 @@
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
     8
 #define FALLBACK L"\\fallback.efi"
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
     9
 #define MOK_MANAGER L"\\MokManager.efi"
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    10
 
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    11
+#ifdef __sun
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    12
+#include <sys/int_types.h>
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    13
+typedef    uint64_t    UINTN;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    14
+#endif
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    15
+	
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    16
 static EFI_SYSTEM_TABLE *systab;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    17
 static EFI_HANDLE image_handle;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    18
 static EFI_STATUS (EFIAPI *entry_point) (EFI_HANDLE image_handle, EFI_SYSTEM_TABLE *system_table);
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    19
@@ -1590,6 +1595,9 @@
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    20
 	CHAR16 *PathName = NULL;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    21
 	void *sourcebuffer = NULL;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    22
 	UINT64 sourcesize = 0;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    23
+#ifdef __sun
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    24
+	UINT8 boot_grub = 0;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    25
+#endif
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    26
 	void *data = NULL;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    27
 	int datasize;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    28
 
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    29
@@ -1616,7 +1624,13 @@
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    30
 	}
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    31
 
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    32
 	if (findNetboot(li->DeviceHandle)) {
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    33
+#ifdef __sun
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    34
+		if (PathName[0] == 'g')
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    35
+			boot_grub = 1;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    36
+		efi_status = parseNetbootinfo(image_handle, boot_grub);
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    37
+#else
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    38
 		efi_status = parseNetbootinfo(image_handle);
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    39
+#endif
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    40
 		if (efi_status != EFI_SUCCESS) {
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    41
 			perror(L"Netboot parsing failed: %r\n", efi_status);
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    42
 			return EFI_PROTOCOL_ERROR;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    43
@@ -1690,7 +1704,7 @@
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    44
 
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    45
 	efi_status = start_image(image_handle, use_fb ? FALLBACK :second_stage);
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    46
 
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    47
-	if (efi_status == EFI_SECURITY_VIOLATION) {
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    48
+	if (efi_status != EFI_SUCCESS) {
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    49
 		efi_status = start_image(image_handle, MOK_MANAGER);
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    50
 		if (efi_status != EFI_SUCCESS) {
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    51
 			Print(L"start_image() returned %r\n", efi_status);
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    52
@@ -2173,7 +2187,11 @@
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    53
 	while (x++) {
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    54
 		/* Make this so it can't /totally/ DoS us. */
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    55
 #if defined(__x86_64__) || defined(__i386__) || defined(__i686__)
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    56
+#ifndef __sun
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    57
 		if (x > 4294967294)
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    58
+#else
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    59
+		if (x > 4294967294LL)
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    60
+#endif
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    61
 			break;
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    62
 		__asm__ __volatile__("pause");
37e367b978c0 23300489 Add shim to Userland
Ann Lai <ann.lai@oracle.com>
parents:
diff changeset
    63
 #elif defined(__aarch64__)