chiark / gitweb /
macro: clean up usage of gcc attributes
[elogind.git] / src / shared / acpi-fpdt.c
index b094f34a5f4e31700c74c2bf43b68615c0ea4acf..75648b4d86f91af3a4327c11232d2630c91da6c3 100644 (file)
@@ -81,7 +81,7 @@ struct acpi_fpdt_boot {
 };
 
 int acpi_get_boot_usec(usec_t *loader_start, usec_t *loader_exit) {
-        char *buf;
+        _cleanup_free_ char *buf = NULL;
         struct acpi_table_header *tbl;
         size_t l;
         struct acpi_fpdt_header *rec;
@@ -146,6 +146,11 @@ int acpi_get_boot_usec(usec_t *loader_start, usec_t *loader_exit) {
         if (brec.type != ACPI_FPDT_BOOT_REC)
                 return -EINVAL;
 
+        if (brec.startup_start == 0 || brec.exit_services_exit < brec.startup_start)
+                return -EINVAL;
+        if (brec.exit_services_exit > NSEC_PER_HOUR)
+                return -EINVAL;
+
         if (loader_start)
                 *loader_start = brec.startup_start / 1000;
         if (loader_exit)