diff options
author | Dan Pasanen <invisiblek@cyanogenmod.org> | 2016-12-05 20:36:44 -0600 |
---|---|---|
committer | Dan Pasanen <invisiblek@cyanogenmod.org> | 2016-12-05 20:36:44 -0600 |
commit | 27afd44bf03bac050b46549a5b2e062b7d1e7cd4 (patch) | |
tree | 25f8a9a222bed3821f83e1eaaa88ab2ee83363dc | |
parent | 6455181fc87ebd6a15e8d7017e3ccb79071d1d57 (diff) | |
parent | 14d960a627aff22c6fbc623770d3101f58ca359d (diff) | |
download | android_system_keymaster-cm-14.1_prerebase.tar.gz android_system_keymaster-cm-14.1_prerebase.tar.bz2 android_system_keymaster-cm-14.1_prerebase.zip |
Merge tag 'android-7.1.1_r4' into cm-14.1cm-14.1_prerebase
Android 7.1.1 release 4
# gpg: Signature made Thu Dec 1 13:07:10 2016 CST
# gpg: using DSA key E8AD3F819AB10E78
# gpg: Can't check signature: No public key
-rw-r--r-- | soft_keymaster_context.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/soft_keymaster_context.cpp b/soft_keymaster_context.cpp index 087439a..10ce893 100644 --- a/soft_keymaster_context.cpp +++ b/soft_keymaster_context.cpp @@ -493,6 +493,21 @@ keymaster_error_t SoftKeymasterContext::UpgradeKeyBlob(const KeymasterKeyBlob& k // Handle cases 1 & 2. bool set_changed = false; + + if (os_version_ == 0) { + // We need to allow "upgrading" OS version to zero, to support upgrading from proper + // numbered releases to unnumbered development and preview releases. + + int key_os_version_pos = sw_enforced.find(TAG_OS_VERSION); + if (key_os_version_pos != -1) { + uint32_t key_os_version = sw_enforced[key_os_version_pos].integer; + if (key_os_version != 0) { + sw_enforced[key_os_version_pos].integer = os_version_; + set_changed = true; + } + } + } + if (!UpgradeIntegerTag(TAG_OS_VERSION, os_version_, &sw_enforced, &set_changed) || !UpgradeIntegerTag(TAG_OS_PATCHLEVEL, os_patchlevel_, &sw_enforced, &set_changed)) // One of the version fields would have been a downgrade. Not allowed. |