DivestOS/Patches/LineageOS-14.1/android_system_keymaster/0002-Backport_Fixes.patch
2018-03-14 14:31:08 -04:00

97 lines
3.3 KiB
Diff

diff --git a/include/keymaster/keymaster_configuration.h b/include/keymaster/keymaster_configuration.h
index 97b7fa5..69738fd 100644
--- a/include/keymaster/keymaster_configuration.h
+++ b/include/keymaster/keymaster_configuration.h
@@ -40,12 +40,24 @@
uint32_t GetOsVersion(const char* version_string);
/**
+ * Retrieves and parses OS version information from build properties. Returns 0 if the string
+ * doesn't contain a numeric version number.
+ */
+uint32_t GetOsVersion();
+
+/**
* Parses OS patch level string, returning year and month in integer form. For example, "2016-03-25"
* will be returned as 201603. Returns 0 if the string doesn't contain a date in the form
* YYYY-MM-DD.
*/
uint32_t GetOsPatchlevel(const char* patchlevel_string);
+/**
+ * Retrieves and parses OS patch level from build properties. Returns 0 if the string doesn't
+ * contain a date in the form YYYY-MM-DD.
+ */
+uint32_t GetOsPatchlevel();
+
} // namespace keymaster
#endif // SYSTEM_KEYMASTER_KEYMASTER_CONFIGURATION_H_
diff --git a/keymaster_configuration.cpp b/keymaster_configuration.cpp
index 42df7d6..ac6d3c1 100644
--- a/keymaster_configuration.cpp
+++ b/keymaster_configuration.cpp
@@ -70,15 +70,7 @@
}
keymaster_error_t ConfigureDevice(keymaster2_device_t* dev) {
- char version_str[PROPERTY_VALUE_MAX];
- property_get(kPlatformVersionProp, version_str, "" /* default */);
- uint32_t version = GetOsVersion(version_str);
-
- char patchlevel_str[PROPERTY_VALUE_MAX];
- property_get(kPlatformPatchlevelProp, patchlevel_str, "" /* default */);
- uint32_t patchlevel = GetOsPatchlevel(patchlevel_str);
-
- return ConfigureDevice(dev, version, patchlevel);
+ return ConfigureDevice(dev, GetOsVersion(), GetOsPatchlevel());
}
uint32_t GetOsVersion(const char* version_str) {
@@ -89,8 +81,8 @@
}
regmatch_t matches[kPlatformVersionMatchCount];
- int not_match
- = regexec(&regex, version_str, kPlatformVersionMatchCount, matches, 0 /* flags */);
+ int not_match =
+ regexec(&regex, version_str, kPlatformVersionMatchCount, matches, 0 /* flags */);
regfree(&regex);
if (not_match) {
ALOGI("Platform version string does not match expected format. Using version 0.");
@@ -104,6 +96,12 @@
return (major * 100 + minor) * 100 + subminor;
}
+uint32_t GetOsVersion() {
+ char version_str[PROPERTY_VALUE_MAX];
+ property_get(kPlatformVersionProp, version_str, "" /* default */);
+ return GetOsVersion(version_str);
+}
+
uint32_t GetOsPatchlevel(const char* patchlevel_str) {
regex_t regex;
if (regcomp(&regex, kPlatformPatchlevelRegex, REG_EXTENDED) != 0) {
@@ -112,8 +110,8 @@
}
regmatch_t matches[kPlatformPatchlevelMatchCount];
- int not_match
- = regexec(&regex, patchlevel_str, kPlatformPatchlevelMatchCount, matches, 0 /* flags */);
+ int not_match =
+ regexec(&regex, patchlevel_str, kPlatformPatchlevelMatchCount, matches, 0 /* flags */);
regfree(&regex);
if (not_match) {
ALOGI("Platform patchlevel string does not match expected format. Using patchlevel 0");
@@ -130,4 +128,10 @@
return year * 100 + month;
}
+uint32_t GetOsPatchlevel() {
+ char patchlevel_str[PROPERTY_VALUE_MAX];
+ property_get(kPlatformPatchlevelProp, patchlevel_str, "" /* default */);
+ return GetOsPatchlevel(patchlevel_str);
+}
+
} // namespace keymaster