Commit Graph

2953 Commits

Author SHA1 Message Date
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
Richard Hughes
68db74b006 Correctly get the check the new version for devices that replug
There are a lot of failures in the LVFS with 'device version not updated on
success' and this is because we were looking at the original FuDevice, rather
than the FuDevice that came back after the bootloader replug phase.

Before doing the check get the new FuDevice to prevent failing the check with
a false positive.
2019-03-14 08:50:06 -05:00
Richard Hughes
363aa54605 trivial: Update the capsule header helper to work without flags set 2019-03-13 11:15:49 +00:00
Richard Hughes
b008bcab50 Add a simple script to add a capsule header
This may be helpful for OEMs and ODMs shipping 'bare' firmware.
2019-03-12 13:54:29 -05:00
Richard Hughes
d364184209 trivial: Do not create the private key if _USE_CLIENT_CERT unset 2019-03-12 08:25:22 -05:00
Richard Hughes
f3c7d42289 Ensure the PKCS-7 client certificate exists at startup
This ensures the certificate is always present even before the user has
generated a report or manually signed test data.

Also, if the GnuTLS version is too old just log a message and continue.
2019-03-12 08:25:22 -05:00
connor nolan
03fbe471e8 fix makecab directive options 2019-03-12 06:28:12 -05:00
Thaodan
156538f1c3 fwpup.service: use display-manager.service instead of gdm.service
Instead of referring to just *gdm.service* use the alias *display-manager.service* instead to allow other display managers like *sddm* too.
2019-03-12 10:03:27 +00:00
Steve McIntyre
c8de6b6398 trivial: debian: Update the format of the json metadata to match new requirements
* Move all the data under a new top-level "packages" key
* Add an empty "trusted_certs" key - our binaries do not do any
  further verification with an embedded key.
2019-03-11 17:06:21 -05:00
Richard Hughes
4ffc14f6ea Allow signing the fwupd report with the client certificate 2019-03-11 13:57:39 +00:00
Richard Hughes
3d60762bed Add a D-Bus method to generate a signature using the self-signed client certificate 2019-03-11 13:57:39 +00:00
Richard Hughes
f28abe7fda Allow signing and verifying data using a PKCS-7 self-signed client certificate
This is a per-client certificate and private key that can be used to sign
metadata sent to remote servers, for instance success/failure reports.
2019-03-11 13:57:39 +00:00
Richard Hughes
26e1549d16 trivial: Abstract out fu_keyring_pkcs7_load_crt_from_filename()
We'll need this for future functionality.
2019-03-11 13:57:39 +00:00
Richard Hughes
ca6d92aa5c trivial: Allow PKCS-7 certificates for DIGITAL_SIGNATURE
This allows us to also use a self-signed certificate for verification.
2019-03-11 13:57:39 +00:00
Richard Hughes
2eee2582fd trivial: Fix several NULL/FALSE return mistakes 2019-03-11 13:17:55 +00:00
Richard Hughes
6bc7098640 Fix a critical warning when loading a PKCS-7 certificate with no DN 2019-03-11 13:13:00 +00:00
Richard Hughes
06ef7f7e46 Include all device checksums in the LVFS report
On some hardware the SHA1 checksum is not set and so we want to use the SHA256
hash value as well.

The LVFS doesn't currently read the ChecksumDevice value and so nothing will
explode serverside when changing this type from 'string' to 'array of strings'.
2019-03-11 06:42:26 -05:00
Richard Hughes
0ca78aa2e1 modem-manager: Fix a trivial build warning
Fixes https://github.com/hughsie/fwupd/issues/1082
2019-03-08 18:34:36 +00:00
Richard Hughes
a0f9d2e110 superio: Fix a trivial build warning
Fixes https://github.com/hughsie/fwupd/issues/1081
2019-03-08 18:33:06 +00:00
Mario Limonciello
152f7d9e1f trivial: bump libxmlb subproject dependency
Although it's an optional bump, this is needed for
88dc0f4bf0 to fully work.
2019-03-08 17:02:55 +00:00
Richard Hughes
4499d19ba3 Move out the offline update functionality to a new binary
The offline updates environment is special, and we have to be careful to delete
the trigger before doing anything that can fail to avoid boot loops.

For this reason, split it out to a simple self-contained binary that is easy to
understand.
2019-03-08 09:45:30 -06:00
Richard Hughes
ad73719fa4 Do not reboot when failing to start fwupd during offline updates
If another offline update task is run at the same time, e.g. pk-offline-update
from PackageKit then we might corrupt the package database when the client
D-Bus request times out.

Copy the fixes from PackageKit so that the offline updates work together.

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1685471
2019-03-08 09:45:30 -06:00
Mario Limonciello
d1f25ee9b6 trivial: ci: move s390x build into CircleCI
This should hopefully make daily CI runs operate faster by balancing
some across Travis CI and some across Circle CI.
2019-03-08 09:44:49 -06:00
Richard Hughes
c4c5ab41dc Do not write the schema version to the db when loading
If running in fwupd.shutdown the file systems are mounted readonly, which means
the ATA activation is not attempted.
2019-03-07 08:28:36 -06:00
Richard Hughes
88dc0f4bf0 Do not recreate XbSilo caches when running on a readonly filesystem
For my future self, to debug the fwupd.shutdown activation failure, you can do:

    mount /dev/sdc1 /mnt
    /usr/libexec/fwupd/fwupdtool activate --verbose &> /mnt/log.txt
    umount /dev/sdc1

...where /dev/sdc1 is an attached FAT32-formatted USB drive.
2019-03-07 08:28:36 -06:00
Richard Hughes
5e7017b409 trivial: Add FuConfigLoadFlags argument to fu_config_load()
No functionality changes, but allows us to do something new in the future.
2019-03-07 08:28:36 -06:00
Richard Hughes
c8cc77c1c2 trivial: Add FuEngineLoadFlags argument to fu_engine_load()
No functionality changes, but allows us to do something new in the future.
2019-03-07 08:28:36 -06:00
Richard Hughes
5806867ebe Add the fwupdagent binary for use in shell scripts
This currently just outputs the current list of devices with releases and makes
it possible to integrate firmware version reporting with other tools like mgmt.
2019-03-06 13:15:55 +00:00
Richard Hughes
e9058499a1 trivial: Add fwupd_release_has_checksum() 2019-03-05 19:05:28 +00:00
Richard Hughes
56c9c797e2 trivial: Do not print the display checksum in the JSON output
We're only guessing the format from the length, and not adding the wrapper
means it can be consumed more easily from other APIs.
2019-03-05 19:05:19 +00:00
Richard Hughes
8dd4c1c4dd Allow restricting firmware updates for enterprise use 2019-03-05 19:05:07 +00:00
Mario Limonciello
640faed956 trivial: synapticsmst: remove unneeded fixme
The opening flow for enumerate is as expected right now.
2019-03-05 09:39:29 +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
Aleksander Morgado
a374f4c0b5 standalone-installer: new --allow-older and --allow-reinstall options 2019-03-04 09:29:44 -06:00
Richard Hughes
e1f44372ce trivial: Show the release flags when doing fwupdmgr get-releases 2019-03-04 15:11:36 +00:00
Richard Hughes
8e0cc802fe Show the upgrade and downgrade flags when getting releases for a device
This allows us to one day implement 'reinstall', allows us to have a more useful
`get-releases` command and also means we can add other reasons for blocking the
release in the future.
2019-03-04 15:11:36 +00:00
Richard Hughes
245885ca1f Rename FwupdRelease:trust-flags to FwupdRelease:flags
In the future we'll want to use this flag to signify if the release is an
upgrade, downgrade, below the version-lowest, or if it is locked in some way.
2019-03-04 13:55:31 +00:00
Richard Hughes
d9f1f3ce7c trivial: Export the FwupdDevice flags as readable JSON
Rather than displaying:

    "Flags" : 9,

Use the more understandable:

    "Flags" : [
      "updatable",
      "require-ac"
    ],
2019-03-04 13:16:09 +00:00
Richard Hughes
7c52aefe0f trivial: Make the error messages more specific in FuHistory 2019-03-03 19:58:44 -06:00
Richard Hughes
7098fb0299 trivial: Correctly set the schema version when upgrading the database 2019-03-03 19:58:44 -06:00
Richard Hughes
40154dbbee trivial: Remove some untrue debugging 2019-03-03 19:58:44 -06:00
Mario Limonciello
6884795033 trivial: snap: fix install location for shutdown script (Fixes: #1064) 2019-03-03 19:48:27 -06:00
Richard Hughes
7120667ccd trivial: Move getting the SoupSession to common code 2019-03-01 10:07:50 -06:00
Richard Hughes
c77e111449 trivial: Move command line handling into common code
I'm about to use this a third time, so now is the time to refactor.
2019-03-01 10:07:50 -06:00
Richard Hughes
b111ae3b5d trivial: Use JSON arrays properly 2019-03-01 12:49:20 +00:00
Richard Hughes
e7715fd1f2 trivial: Use newer Meson features 2019-02-28 11:17:35 -06:00
Mario Limonciello
3143bad0f5 fu-tool: Save device state to @LOCALSTATEDIR@/lib/fwupd/state.json on actions
This feature is turned on with the new fwupdtool option `--enable-json-state`

The intended use case is for ChromeOS to be able to save information about
devices on the system when `fwupdtool update` was run to display in the UX at
a later time.
2019-02-28 10:32:45 -06:00