Mario Limonciello
e219a994dd
trivial: uefi: use UEFI-dummy for device ID instead of just uefi
2019-07-11 09:33:23 -07:00
Mario Limonciello
badef4daf3
trivial: fix error handling for non UEFI case ( #1220 )
2019-07-11 09:33:23 -07:00
Mario Limonciello
65a4894bba
uefi: Determine whether running in legacy mode or not ( Fixes : #1220 )
...
* In startup, check BIOS characteristics for UEFI supported instead of for /sys/firmware/uefi
* In coldplug check for /sys/firmware/uefi
* If /sys/firwmare/uefi missing, create a dummy device telling the user it is in legacy mode
2019-07-10 10:20:49 -07:00
Richard Hughes
59e375707a
uefi: Try to find a duplicate using the loadopt name
...
This means if the loadoptdata changes for any reason (e.g. we start using a
different quirk) we don't get duplicate entries in efibootmgr.
2019-06-05 11:12:07 +01:00
Richard Hughes
49c99038eb
uefi: Provide a quirk to disable the use of the UX capsule
2019-06-05 11:12:07 +01:00
Mario Limonciello
53f0c585ed
trivial: uefi: use the path for efibootmgr that was detected
...
A failure report on LVFS shows that NixOS wasn't able to launch
efibootmgr.
2019-05-31 10:07:59 -05:00
Sean-StarLabs
7239c6ab45
Lite Mk II flag for use-shim-unique
...
Added AMI fix for the "duplicate entry" issue to firmware version 1.0.4 - quirk is needed to install new version
2019-05-23 14:57:17 +01:00
Mario Limonciello
d83f5fe05e
trivial: uefi: clarify error message
...
Help people to debug when their ESP isn't found.
2019-05-20 10:59:54 -07:00
Richard Hughes
dfa9e11bb2
Allow handling FORCE for devices that subclass FuDevice
...
Pass FwupdInstallFlags down to the vfunc to allow us to check the flags when
parsing the firmware and updating the device.
2019-05-05 15:29:00 -05:00
Richard Hughes
26d3da4074
uefi: Fix a libasan failure when reading a UEFI variable
...
It seems some older versions of libefi var incorrectly build the 'length' value
in the DP returned from efi_generate_file_device_path(). This means we copy past
the end of the allocated buffer when parsing the efi_update_info_t structure.
This bug seems fixed in efivar git master, and this fix is only going to help
people with older efivar versions. It's probably a good thing to be a bit more
paranoid about EFI variable data anyway.
DEBUG: UpdateInfo:
? 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
????????????????????????????????????????????????????????????????????????????????????????????????????????
0x0000 ? 07 00 00 00 20 d9 7b 69 cf 12 a9 4d 83 85 99 69 09 bc 65 59 00 00 05 00 00 00 00 00 00 00 00 00
0x0020 ? 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 04 01 2a 00 01 00 00 00 00 08 00 00
0x0040 ? 00 00 00 00 00 40 06 00 00 00 00 00 5a aa 97 5a 10 d5 7e 49 99 0b ca 8d 35 4d c8 6d 02 02 04 04
0x0060 ? 86 00 5c 00 45 00 46 00 49 00 5c 00 66 00 65 00 64 00 6f 00 72 00 61 00 5c 00 66 00 77 00 5c 00
0x0080 ? 66 00 77 00 75 00 70 00 64 00 2d 00 36 00 39 00 37 00 62 00 64 00 39 00 32 00 30 00 2d 00 31 00
0x00a0 ? 32 00 63 00 66 00 2d 00 34 00 64 00 61 00 39 00 2d 00 38 00 33 00 38 00 35 00 2d 00 39 00 39 00
0x00c0 ? 36 00 39 00 30 00 39 00 62 00 63 00 36 00 35 00 35 00 39 00 2e 00 63 00 61 00 70 00 00 00 7f ff
0x00e0 ? 04 00
DEBUG: DP type:0x04 subtype:0x01 size:0x002a
DEBUG: DP type:0x04 subtype:0x04 size:0x0086
DEBUG: found END_ENTIRE at 0x00aa
DEBUG: DP length invalid! Truncating from 0x0086 to 0x0080
DEBUG: DP type:0x7f subtype:0xff size:0x0004
2019-05-02 17:25:34 +01:00
Richard Hughes
5079f26f0e
Never guess the version format from the version string
...
This leads to madness, as some formats are supersets of the detected types,
e.g. 'intel-me' is detected as 'quad' and 'bcd' is detected as 'pair'.
Where the version format is defined in a specification or hardcoded in the
source use a hardcoded enum value, otherwise use a quirk override.
Additionally, warn if the version does not match the defined version format
2019-04-30 09:25:41 +01:00
Richard Hughes
c84b36c541
Export the version-format to clients
...
This allows a vendor to verify the VersionFormat of a device without running
the daemon in verbose mode.
2019-04-30 09:25:41 +01:00
Richard Hughes
cdd390a785
trivial: Fix fwupdate --apply
2019-04-25 12:52:59 +01:00
Richard Hughes
7886c086a1
Don't upload reports when the user has configured their system in a broken way
...
I'm getting a bit fed up with failed reports from arch users where they just
have a broken system. I don't think it's useful to upload to the LVFS or notify
the vendor about failures like this.
2019-04-18 22:06:01 +08:00
Mario Limonciello
c73c02fa70
trivial: uefi: clarify errors related to secure boot
2019-04-17 16:39:29 +08:00
Mario Limonciello
a50b02faf2
uefi: Don't leak the application build path into the binary
...
This can be set at runtime if needed using environment variables.
2019-04-17 16:39:29 +08:00
Richard Hughes
cce6a1cb5a
Do not report transient failures
...
We don't need to report failures to do with AC or battery level to the LVFS.
2019-04-17 08:20:44 +08:00
Richard Hughes
dce91204c9
Fix some typos spotted using codespell
2019-04-08 12:47:53 +01:00
Gary Lin
5d9984e5ad
uefi: add a new option to specify the os name
...
fu_uefi_get_esp_path_for_os() generates the path to the OS directory
based on "ID" in /etc/os-release, and it may not work for some distros.
Take openSUSE as an example, the "ID" for openSUSE Leap is
"opensuse-leap" and that for openSUSE Tumbleweed is "opensuse-tumbleweed".
However, both of them use the same OS directory in the ESP, i.e.
"/EFI/opensuse".
This commit adds a new build option, efi_os_dir, to allow the packager to
specify the name of OS directory at build time instead of the runtime
detection.
Signed-off-by: Gary Lin <glin@suse.com>
2019-03-29 04:29:42 -04:00
Richard Hughes
0a57b90d75
uefi: More carefully check the output from tpm2_pcrlist
...
Otherwise we can get a PCR0 of 'getcapability:getpcrallocationstatuserror'...
2019-03-27 14:18:19 -04:00
Richard Hughes
77d97406f2
uefi: Don't overwrite CustomFlags if set from a quirk
2019-03-27 14:21:00 +00:00
Richard Hughes
5c18617e8f
uefi: Actually upload the UPDATE_INFO entry for the UX capsule
2019-03-15 14:22:01 +00:00
Richard Hughes
72e7a82c88
uefi: Check the error code of QueryCapsuleCapabilities() correctly
...
We can't print max or reset as they are undefined in the event of failure.
2019-03-15 09:27:55 +00:00
Peter Jones
fda89fd15e
Update the UEFI UX Capsule Header checksum when needed.
...
Signed-off-by: Peter Jones <pjones@redhat.com>
2019-03-14 14:06:06 -05:00
Richard Hughes
35b6e13d96
uefi: Copy the shimx64.efi binary for known broken firmware
...
Some system firmware helpfully 'deduplicate' the boot loader entries based on
the filepath, without taking into account either the label or optional data.
This means we have to use a custom copy of shim for firmware updates.
2019-03-14 17:00:53 +00:00
Mario Limonciello
f4c43592fc
trivial: uefi: correct an order of operations looking for UX capsule
...
This was caught by LGTM.
This pointer might have type struct <unnamed> (size 28), but the
pointer arithmetic here is done with type UX_CAPSULE_HEADER * (size 16).
2019-03-05 09:39:29 +00:00
Mario Limonciello
65415e6c8d
trivial: uefi: Remove an unnecessary warning caught by LGTM
...
This clause is indeed impossible to hit due to earlier checks
for the size of `is`.
2019-03-05 09:39:29 +00:00
Richard Hughes
f45c651dd1
uefi: Fix the self tests when running on Fedora SilverBlue
2019-02-26 19:13:35 +00:00
Richard Hughes
b768e4d924
Do not fail to start the daemon if tpm2_pcrlist hangs
...
In some situations SELinux prevents fwupd from executing tpm2_pcrlist, but the
failure mode is that the process just hangs and never completes. This causes
systemd to time out the fwupd daemon startup and then errors to be shown in
GNOME Software.
To prevent this happening, add an optional timeout argument to
fu_common_spawn_sync() and cancel the subprocess if it takes longer than this
to complete.
See https://bugzilla.redhat.com/show_bug.cgi?id=1665701 for details.
2019-02-26 14:27:13 +00:00
Mrmaxmeier
49448a99d4
uefi: fix segfault in fwup_set_update_statuses
...
If the near-zero memory region is populated, this caused UEFI
updates to get stuck trying to deref random pointers.
2019-02-15 21:26:56 +00:00
Richard Hughes
20f14c29cb
uefi: Allow devices to create more complete fake UEFI devices
...
Also, gets rid of two 'TODO' warnings with LGTM.
2019-02-12 06:28:51 -06:00
Richard Hughes
10b2fef1bd
trivial: Fix a 'Comparison is always true' LGTM warning
...
Not a bug, but somewhat muddled logic I guess.
2019-02-12 06:28:51 -06:00
Richard Hughes
bfd946e463
Use '#pragma once' to avoid a lot of boilerplate
2019-02-09 08:42:30 -06:00
Richard Hughes
65c81921b6
Add fu_device_add_instance_id() and prefer explicit conversion
2019-02-04 15:19:57 +00:00
Richard Hughes
592baedfff
Export some of the GUID functionality
2019-02-04 15:19:57 +00:00
Richard Hughes
96e6783982
trivial: Fix potential compile failures for high -j values
2019-02-01 16:52:16 +00:00
Richard Hughes
1e07ec95b6
uefi: Disable -Wno-address-of-packed-member
...
Unaligned reads don't really matter on all the architectures the EFI binary is
being built for.
2019-02-01 16:38:14 +00:00
Richard Hughes
c6b94791ec
uefi: Don't unconditionally enable Werror for the EFI binary
2019-02-01 16:38:14 +00:00
Richard Hughes
44ce5aeae4
uefi: Add a quirk to use the legacy bootmgr description
...
Some hardware from Lenovo deduplicates UEFI Boot entries, and uses the old
string 'Linux-Firmware-Updater' to avoid removing the firmware update entry.
Although this is forbidden in the UEFI specification we shouldn't break
firmware updates from old firmware versions.
Provide a quirk for this, and automatically whitelist anything with the LENOVO
SMBIOS Manufacturer.
2019-01-30 12:13:39 +00:00
Richard Hughes
4fef28d0ac
trivial: Add the missing protocol IDs to the plugin READMEs
2019-01-29 22:28:09 +00:00
Richard Hughes
0a212fd1d6
uefi: Add a trivial debugging statement to debug a UX capsule failure
2019-01-25 11:04:35 +00:00
Richard Hughes
9ba9d8a98b
uefi: Use fwup_new0() to allocate the updates table array
...
Although malloc probably works due to the page size, it's not the thing to use.
2019-01-25 11:04:30 +00:00
Mario Limonciello
68fb11f453
uefi: Correct a boot order creation bug ( Fixes : #956 )
...
Unfortunately the previous fix (6131f5d ) introduced this bug.
The code previously was actually looking for the non-zero case
which was correct, but non-obvious since `efi_guid_cmp` works like
`g_strcmp0` where a match returns zero.
So rather than revert 6131f5d make this completly explicit.
2019-01-22 07:28:32 +00:00
Richard Hughes
088c258894
trivial: Make one uefi function static
2019-01-20 22:29:44 +00:00
Richard Hughes
c7327385f4
uefi: Remove all variable length arrays
2019-01-20 22:29:44 +00:00
Richard Hughes
31c10b7293
uefi: Fix a logic bug in fwup_search_file()
...
If n_handles==0 then we'd return with EFI_SUCCESS, rather than failure.
2019-01-20 22:29:44 +00:00
Richard Hughes
59407ca42d
uefi: Use _cleanup_free in one more place
2019-01-20 22:29:44 +00:00
Richard Hughes
00b87884c4
uefi: Do not pass required attrs to fwup_delete_variable()
...
This lets us refactor some code and remove some complexity.
2019-01-20 22:29:44 +00:00
Richard Hughes
aa6498866c
uefi: Delete the old Linux-Firmware-Updater boot entry
2019-01-20 22:29:44 +00:00
Richard Hughes
525433e4de
uefi: Use the GNU-EFI BOOL type
2019-01-20 22:29:44 +00:00