Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
|
|
|
|
`fsname_base` points inside the dynamically allocated `path` which is
freed before `fsname_base` is used, creating a use-after-free condition.
This commits makes sure to free `path` only after it is no longer needed.
|
|
|
|
Older ipsw archives have the root filesystem stored in compressed
format rather than just "stored". The "Verifying Filesystem" step
would then fail as compressed files are not seekable in ZIP files.
This commit introduces a detection for this and has the filesystem
extracted should it be required.
If not using a cache path, the temp file used for extraction will
be deleted after the procedure is completed.
|
|
|
|
|
|
|
|
errors
Turns out even with a CHECKPOINT_RESULT of 0 we can still have a
CHECKPOINT_ERROR string.
|
|
|
|
missing tag
|
|
|
|
|
|
|
|
extracted ipsw
This allows flashing directly from IPSW archive without having to extract it
first, and ultimately removes the "Extracting filesystem from IPSW" part.
Restoring from extracted IPSW is also supported, just pass the path to the
directory that has all the files from a given IPSW.
|
|
and print it in a better format if it does exist
|
|
This uses the DeviceGeneratedRequest and DeviceGeneratedTags to generate
the full TSS request. This allows to have a more future-proof approach
to new firmware names they add.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
macOS 13 introduced a new global manifest for Cryptex1 and it requires
tickets found in Firmware/Manifests/restore/cryptex1/macOS Customer/
inside an IPSW, but we currently do not use the tickets and end up
unexpected behavior on a Mac device after restoring, e.g. bputil
fails to downgrade security mode due to "Cryptex1 manifest verification
failed". This adds a proper handling to use the appropriate tickets.
Signed-off-by: Munehisa Kamata <kamatam@amazon.com>
|
|
when no error was detected
This only occurred when using --ignore-errors command line option.
|
|
|
|
|
|
Some devices seem to not have a serial number, usually in restore mode, which
will cause the restore operation to fail since we specifically check for it.
An earlier commit already removed the actual comparison in favor of comparing
the ECID, but some checks would still result in restore failures as it can't
retrieve the serial number on said devices at all.
This commit also makes sure to get the ECID in all modes as early as possible
and removes all the helper functions for it since they are not needed anymore.
|
|
This message seems mandatory on the new versions of MacOS (12+), but it
seems an empty response is what's expected.
|
|
|
|
|
|
|
|
comparison)
|
|
|
|
At least this has been going unnoticed until recently. For quite some time
we have been sending NorImageData as array to the device, but it turned out
that this was only expected for iOS < 7.0 and from then on it was supposed
to be a dictionary with the components.
Now we should correctly handle it.
|
|
unneeded comments
|
|
|
|
match device
Some devices seem to not provide serial number information in recovery or
restore mode so we use ECID instead to make sure we deal with the same device.
|
|
|
|
|
|
with fallback to the legacy code with a compile time warning. The legacy
code will be removed in the future once a newer libimobiledevice has been
officially released.
|
|
|
|
Signed-off-by: Hector Martin <marcan@marcan.st>
|
|
This is used on macOS 12+ (Monterey and later) to allow older OSes to
perform the bless2/bootability process for newer OSes, by putting a
shared library in the Preboot partition that contains the specific logic
required to make a given macOS install bootable.
Closes: #441
Signed-off-by: Hector Martin <marcan@marcan.st>
|
|
Monterey got rid of VariantSupportsGlobalSigning. Identify builds
based on the Variant field (which seems to always have consistent
values) instead of using RestoreBehavior and
VariantSupportsGlobalSigning.
Signed-off-by: Hector Martin <marcan@marcan.st>
|
|
update failure)
|
|
Older firmware versions don't seem to always include CHECKPOINT_COMPLETE
so we assume that state is false instead of aborting with an error.
|