Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package fwts for openSUSE:Factory checked in 
at 2026-07-21 23:10:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/fwts (Old)
 and      /work/SRC/openSUSE:Factory/.fwts.new.24530 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "fwts"

Tue Jul 21 23:10:14 2026 rev:90 rq:1366865 version:26.07.00

Changes:
--------
--- /work/SRC/openSUSE:Factory/fwts/fwts.changes        2026-05-28 
17:34:04.677436179 +0200
+++ /work/SRC/openSUSE:Factory/.fwts.new.24530/fwts.changes     2026-07-21 
23:10:35.982706304 +0200
@@ -1,0 +2,18 @@
+Tue Jul 21 05:52:40 UTC 2026 - Martin Pluskal <[email protected]>
+
+- Update to version 26.07.00:
+  * Add new klog database entries for x86 E820 table overflow,
+    ACPI FFH LPI, fan status/extension, RIMT IOMMU lookup, AGDI
+    interrupt registration and MPAM error messages.
+  * tpm2: accept Arm FF-A Start Method and validate its parameters.
+  * tpmevlog: handle PCR[0] replay for EV_EFI_HCRTM_EVENT.
+  * dmicheck: fix off-by-one in SMBIOS table size boundary check
+    and fix bus error when copying SMBIOS tables from memory.
+  * uefibootpath: correct error message for UART stop bits
+    validation.
+  * Fix numerous format strings across acpi (fadt, hest, madt,
+    mcfg, gpedump, tpm2) and tpm event-log dumping.
+  * acpi: madt: silence compiler warning when using Clang.
+  * build: link explicitly to zlib.
+
+-------------------------------------------------------------------

Old:
----
  fwts-26.05.00.obscpio

New:
----
  fwts-26.07.00.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ fwts.spec ++++++
--- /var/tmp/diff_new_pack.6Jk98h/_old  2026-07-21 23:10:38.894805868 +0200
+++ /var/tmp/diff_new_pack.6Jk98h/_new  2026-07-21 23:10:38.902806141 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           fwts
-Version:        26.05.00
+Version:        26.07.00
 Release:        0
 Summary:        Firmware Test Suite
 License:        GPL-2.0-or-later

++++++ _service ++++++
--- /var/tmp/diff_new_pack.6Jk98h/_old  2026-07-21 23:10:39.058811475 +0200
+++ /var/tmp/diff_new_pack.6Jk98h/_new  2026-07-21 23:10:39.066811748 +0200
@@ -2,6 +2,7 @@
 <service name="obs_scm" mode="manual">
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="url">https://github.com/fwts/fwts.git</param>
+    <param name="revision">V26.07.00</param>
     <param name="scm">git</param>
     <param name="changesgenerate">enable</param>
     <param name="exclude">.*</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.6Jk98h/_old  2026-07-21 23:10:39.222817082 +0200
+++ /var/tmp/diff_new_pack.6Jk98h/_new  2026-07-21 23:10:39.230817355 +0200
@@ -5,6 +5,6 @@
                 <param 
name="url">https://github.com/ColinIanKing/fwts.git</param>
               <param 
name="changesrevision">7a824d3b13fb4e33c3970fe560e36d2c65e7fb10</param></service><service
 name="tar_scm">
                 <param name="url">https://github.com/fwts/fwts.git</param>
-              <param 
name="changesrevision">885403fe8580a49023cbdbb5dca5560a2da1256d</param></service></servicedata>
+              <param 
name="changesrevision">b7c224c5c9950a7080a8023e8fb45abde2fdaa54</param></service></servicedata>
 (No newline at EOF)
 

++++++ fwts-26.05.00.obscpio -> fwts-26.07.00.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fwts-26.05.00/auto-packager/mkpackage.sh 
new/fwts-26.07.00/auto-packager/mkpackage.sh
--- old/fwts-26.05.00/auto-packager/mkpackage.sh        2026-05-27 
05:26:14.000000000 +0200
+++ new/fwts-26.07.00/auto-packager/mkpackage.sh        2026-07-20 
06:36:33.000000000 +0200
@@ -23,7 +23,7 @@
 # Get fwts sources, strip out .git directory, add in necessary debian packaging
 # files, build source package ready for upload.
 #
-RELEASES="bionic focal jammy noble questing resolute stonking"
+RELEASES="bionic focal jammy noble resolute stonking"
 REPO=https://github.com/fwts/fwts
 RELEASE_TAR_URL=https://github.com/fwts/fwts/archive/refs/tags/
 FWTS=fwts
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fwts-26.05.00/data/klog.json 
new/fwts-26.07.00/data/klog.json
--- old/fwts-26.05.00/data/klog.json    2026-05-27 05:26:14.000000000 +0200
+++ new/fwts-26.07.00/data/klog.json    2026-07-20 06:36:33.000000000 +0200
@@ -7454,6 +7454,97 @@
           "pattern": "Invalid command line: uid is too long",
           "advice": "The AMD IOMMU driver rejected an ivrs_acpihid command 
line parameter because the specified Unique ID (UID) exceeds the maximum 
allowed length. The IOMMU device override will not be applied.",
           "label": "KlogAmdIommuCmdlineUidTooLong"
+         },
+         {
+          "compare_mode": "string",
+          "log_level": "LOG_LEVEL_HIGH",
+          "pattern": "Partitioned interrupts not supported",
+          "advice": "The ACPI MPAM parser found a partitioned interrupt 
description, which is not supported. The MPAM interrupt cannot be registered 
and MPAM resource monitoring may not be usable.",
+          "label": "KlogAcpiMpamPartitionedInterruptsUnsupported"
+         },
+         {
+          "compare_mode": "regex",
+          "log_level": "LOG_LEVEL_HIGH",
+          "pattern": "Failed to register interrupt 0x.* with ACPI",
+          "advice": "The ACPI MPAM driver failed to register a 
firmware-described interrupt with ACPI. MPAM overflow or error interrupt 
handling may not be available.",
+          "label": "KlogAcpiMpamInterruptRegisterFailed"
+         },
+         {
+          "compare_mode": "regex",
+          "log_level": "LOG_LEVEL_HIGH",
+          "pattern": "Bad level (.*) for cache with id .*",
+          "advice": "The ACPI MPAM parser could not map a firmware-provided 
cache identifier to a valid cache level. The MPAM resource instance for that 
cache cannot be created.",
+          "label": "KlogAcpiMpamCacheLevelInvalid"
+         },
+         {
+          "compare_mode": "string",
+          "log_level": "LOG_LEVEL_HIGH",
+          "pattern": "MSC entry overlaps end of ACPI table",
+          "advice": "The ACPI MPAM table contains an MSC entry that extends 
past the end of the table. The table is malformed and MPAM parsing is aborted.",
+          "label": "KlogAcpiMpamMscEntryTableOverlap"
+         },
+         {
+          "compare_mode": "string",
+          "log_level": "LOG_LEVEL_HIGH",
+          "pattern": "Unrecognised MSC, MPAM not usable",
+          "advice": "The ACPI MPAM parser found an MSC entry with unsupported 
or reserved fields set. MPAM cannot be enabled safely with this firmware 
description.",
+          "label": "KlogAcpiMpamMscUnrecognised"
+         },
+         {
+          "compare_mode": "regex",
+          "log_level": "LOG_LEVEL_HIGH",
+          "pattern": "cannot register GSI#.* (.*)",
+          "advice": "The ACPI AGDI driver failed to register the 
firmware-provided GSIV as a Linux interrupt. AGDI diagnostic dump and reset 
interrupt handling may not be available.",
+          "label": "KlogAcpiAgdiGsiRegisterFailed"
+         },
+         {
+          "compare_mode": "regex",
+          "log_level": "LOG_LEVEL_HIGH",
+          "pattern": "cannot register IRQ .*",
+          "advice": "The ACPI AGDI driver failed to request the interrupt used 
for diagnostic dump and reset handling. AGDI interrupt signaling cannot be 
enabled.",
+          "label": "KlogAcpiAgdiIrqRegisterFailed"
+         },
+         {
+          "compare_mode": "string",
+          "log_level": "LOG_LEVEL_HIGH",
+          "pattern": "Could not find IOMMU node in RIMT",
+          "advice": "The RISC-V ACPI RIMT driver could not find a firmware 
IOMMU node matching the device. IOMMU translation setup for that device cannot 
proceed.",
+          "label": "KlogAcpiRimtIommuNodeNotFound"
+         },
+         {
+          "compare_mode": "regex",
+          "log_level": "LOG_LEVEL_MEDIUM",
+          "pattern": "Error retrieving current fan status: .*",
+          "advice": "The ACPI fan driver could not evaluate the current fan 
status from firmware. Fan speed reporting and notification handling may be 
incomplete.",
+          "label": "KlogAcpiFanCurrentStatusFailed"
+         },
+         {
+          "compare_mode": "regex",
+          "log_level": "LOG_LEVEL_MEDIUM",
+          "pattern": "Failed to update trip points: .*",
+          "advice": "The ACPI fan driver failed to update firmware trip points 
for fan speed notifications. Fan speed change notifications may be delayed or 
missed.",
+          "label": "KlogAcpiFanTripPointUpdateFailed"
+         },
+         {
+          "compare_mode": "string",
+          "log_level": "LOG_LEVEL_MEDIUM",
+          "pattern": "Failed to start Microsoft fan extensions",
+          "advice": "The ACPI fan driver failed to start the Microsoft fan 
extension support used for fan trip point notifications. Enhanced fan status 
updates may not be available.",
+          "label": "KlogAcpiFanMicrosoftExtensionsStartFailed"
+         },
+         {
+          "compare_mode": "regex",
+          "log_level": "LOG_LEVEL_MEDIUM",
+          "pattern": "CPU.*: Invalid FFH LPI data",
+          "advice": "The ACPI processor idle driver rejected firmware-provided 
FFH LPI data for a CPU. Low-power idle states for that CPU may be unavailable 
or fall back to other idle mechanisms.",
+          "label": "KlogAcpiProcessorIdleFfhLpiDataInvalid"
+         },
+         {
+          "compare_mode": "regex",
+          "log_level": "LOG_LEVEL_HIGH",
+          "pattern": "E820 table full; ignoring \\[mem .*\\]",
+          "advice": "The x86 E820 memory map table is full, so the kernel 
ignored a firmware-provided memory range. The system memory map may be 
incomplete, which can affect memory reservation and device resource handling.",
+          "label": "KlogX86E820TableFull"
          }
         ],
  "pm_error_warning_patterns":
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fwts-26.05.00/debian/changelog 
new/fwts-26.07.00/debian/changelog
--- old/fwts-26.05.00/debian/changelog  2026-05-27 05:26:14.000000000 +0200
+++ new/fwts-26.07.00/debian/changelog  2026-07-20 06:36:33.000000000 +0200
@@ -1,3 +1,41 @@
+fwts (26.07.00-0ubuntu1) stonking; urgency=medium
+
+  [Dat Mach]
+  * tpmevlog: handle PCR[0] replay for EV_EFI_HCRTM_EVENT
+
+  [Ivan Hu]
+  * dmi: dmicheck: fix bus error when copying SMBIOS tables from memory
+  * acpi: gpedump: Fix format string for BlockBaseNumber
+  * acpi: hest: Fix format strings for record/section counts
+  * acpi: tpm2: Fix format string for start_method
+  * tpm: tpmevlog: Fix format string for number_of_alg
+  * tpm: tpmevlogdump: Fix wrong field printed for specVersionMajor
+  * klog.json: Add ACPI MPAM error messages to klog database
+  * klog.json: Add ACPI AGDI interrupt registration error messages to klog
+    database
+  * klog.json: Add ACPI RIMT IOMMU lookup error message to klog database
+  * klog.json: Add ACPI fan status and extension error messages to klog 
database
+  * klog.json: Add ACPI processor FFH LPI error message to klog database
+  * klog.json: Add x86 E820 table overflow error message to klog database
+  * dmicheck: fix off-by-one in SMBIOS table size boundary check
+  * tpm2: accept Arm FF-A Start Method and validate its parameters
+  * fwts-test: update tpm2 expected output for Arm FF-A Start Method fix
+  * auto-packager: mkpackage.sh: remove questing
+
+  [Marc Bornand]
+  * build: link to zlib
+
+  [Thomas Huth]
+  * acpi: mcfg: Fix format string for pci_segment_group_number
+  * acpi: madt: Silence compiler warning when using Clang
+  * acpi: gpedump: Fix format string for BaseGpeNumber
+  * acpi: fadt: Fix format string for printing sci_int
+
+  [Xiang W]
+  * uefi: uefibootpath: correct error message for UART stop bits validation
+
+ -- Ivan Hu <[email protected]>  Mon, 20 Jul 2026 04:36:32 +0000
+
 fwts (26.05.00-0ubuntu1) stonking; urgency=medium
 
   [Ivan Hu]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fwts-26.05.00/fwts-test/tpm2-0001/tpm2-0002.log 
new/fwts-26.07.00/fwts-test/tpm2-0001/tpm2-0002.log
--- old/fwts-26.05.00/fwts-test/tpm2-0001/tpm2-0002.log 2026-05-27 
05:26:14.000000000 +0200
+++ new/fwts-26.07.00/fwts-test/tpm2-0001/tpm2-0002.log 2026-07-20 
06:36:33.000000000 +0200
@@ -12,7 +12,7 @@
 tpm2            FAILED [MEDIUM] TPM2ReservedNonZero: Test 1, TPM2 Reserved
 tpm2            field must be zero, got 0x0003 instead
 tpm2            FAILED [HIGH] TPM2BadStartMethod: Test 1, TPM2's Start
-tpm2            Method must be between 0x1 and 0xd, got 0xff
+tpm2            Method must be between 0x1 and 0xd or 0xf, got 0xff
 tpm2            
 tpm2            ==========================================================
 tpm2            0 passed, 3 failed, 0 warning, 0 aborted, 0 skipped, 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fwts-26.05.00/snapcraft.yaml 
new/fwts-26.07.00/snapcraft.yaml
--- old/fwts-26.05.00/snapcraft.yaml    2026-05-27 05:26:14.000000000 +0200
+++ new/fwts-26.07.00/snapcraft.yaml    2026-07-20 06:36:33.000000000 +0200
@@ -1,5 +1,5 @@
 name: fwts
-version: V26.05.00
+version: V26.07.00
 summary: The Firmware Test Suite (FWTS)
 description: This is a firmware test suite that performs sanity checks on 
system firmware. It is intended to identify BIOS and ACPI errors and if 
appropriate it will try to explain the errors and give advice to help 
workaround or fix firmware bugs.  It is primarily intended to be a 
Linux-centric firmware troubleshooting tool.
 confinement: devmode
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fwts-26.05.00/src/acpi/fadt/fadt.c 
new/fwts-26.07.00/src/acpi/fadt/fadt.c
--- old/fwts-26.05.00/src/acpi/fadt/fadt.c      2026-05-27 05:26:14.000000000 
+0200
+++ new/fwts-26.07.00/src/acpi/fadt/fadt.c      2026-07-20 06:36:33.000000000 
+0200
@@ -1662,7 +1662,7 @@
         * used to verify that the value is correct.
         */
        if (!fwts_acpi_is_reduced_hardware(fw)) {
-               fwts_log_info(fw, "FADT SCI_INT is %" PRIu8, fadt->sci_int);
+               fwts_log_info(fw, "FADT SCI_INT is %" PRIu16, fadt->sci_int);
                acpi_table_check_fadt_smi_cmd(fw);
                acpi_table_check_fadt_acpi_enable(fw);
                acpi_table_check_fadt_acpi_disable(fw);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fwts-26.05.00/src/acpi/gpedump/gpedump.c 
new/fwts-26.07.00/src/acpi/gpedump/gpedump.c
--- old/fwts-26.05.00/src/acpi/gpedump/gpedump.c        2026-05-27 
05:26:14.000000000 +0200
+++ new/fwts-26.07.00/src/acpi/gpedump/gpedump.c        2026-07-20 
06:36:33.000000000 +0200
@@ -89,7 +89,7 @@
                        strncpy(buf, "unknown", sizeof(buf));
                        break;
                }
-               fwts_log_info_verbatim(fw, "      GPE 0x%2.2" PRIx8 ":",
+               fwts_log_info_verbatim(fw, "      GPE 0x%4.4" PRIx16 ":",
                        gpe_block_info->BlockBaseNumber + gpe);
                fwts_log_info_verbatim(fw, "        Flags:    0x%2.2" PRIx8 " 
(trigger: %s, wake: %s)",
                        GpeEventInfo->Flags,
@@ -137,7 +137,7 @@
 
                fwts_log_nl(fw);
                fwts_log_info_verbatim(fw,
-                       "    Register %" PRIu32 ": (GPE 0x%2.2" PRIx8 "-0x%2.2" 
PRIx8 ")",
+                       "    Register %" PRIu32 ": (GPE 0x%4.4" PRIx16 
"-0x%4.4" PRIx16 ")",
                        reg,
                        gpe_reg_info->BaseGpeNumber,
                        gpe_reg_info->BaseGpeNumber + (ACPI_GPE_REGISTER_WIDTH 
- 1));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fwts-26.05.00/src/acpi/hest/hest.c 
new/fwts-26.07.00/src/acpi/hest/hest.c
--- old/fwts-26.05.00/src/acpi/hest/hest.c      2026-05-27 05:26:14.000000000 
+0200
+++ new/fwts-26.07.00/src/acpi/hest/hest.c      2026-07-20 06:36:33.000000000 
+0200
@@ -326,7 +326,7 @@
                fwts_failed(fw, LOG_LEVEL_HIGH,
                        "HESTInvalidRecordsToPreallocate",
                        "HEST IA-32 Architecture NMI Number of Records "
-                       "to Preallocate is 0x%" PRIx16 " and must be "
+                       "to Preallocate is 0x%" PRIx32 " and must be "
                        "more than zero.",
                        err->number_of_records_to_preallocate);
        }
@@ -335,7 +335,7 @@
                fwts_failed(fw, LOG_LEVEL_HIGH,
                        "HESTInvalidMaxSectionsPerRecord",
                        "HEST A-32 Architecture NMI Max Sections Per "
-                       "Record is 0x%" PRIx16 " and must be "
+                       "Record is 0x%" PRIx32 " and must be "
                        "more than zero.",
                        err->max_sections_per_record);
        }
@@ -397,7 +397,7 @@
                fwts_failed(fw, LOG_LEVEL_HIGH,
                        "HESTInvalidRecordsToPreallocate",
                        "HEST PCI Express Root Port Number of Records "
-                       "to Preallocate is 0x%" PRIx16 " and must be "
+                       "to Preallocate is 0x%" PRIx32 " and must be "
                        "more than zero.",
                        aer->number_of_records_to_preallocate);
        }
@@ -406,7 +406,7 @@
                fwts_failed(fw, LOG_LEVEL_HIGH,
                        "HESTInvalidMaxSectionsPerRecord",
                        "HEST PCI Express Root Port Max Sections Per "
-                       "Record is 0x%" PRIx16 " and must be "
+                       "Record is 0x%" PRIx32 " and must be "
                        "more than zero.",
                        aer->max_sections_per_record);
        }
@@ -465,7 +465,7 @@
                fwts_failed(fw, LOG_LEVEL_HIGH,
                        "HESTInvalidRecordsToPreallocate",
                        "HEST PCI Express Device Number of Records "
-                       "to Preallocate is 0x%" PRIx16 " and must be "
+                       "to Preallocate is 0x%" PRIx32 " and must be "
                        "more than zero.",
                        aer->number_of_records_to_preallocate);
        }
@@ -474,7 +474,7 @@
                fwts_failed(fw, LOG_LEVEL_HIGH,
                        "HESTInvalidMaxSectionsPerRecord",
                        "HEST PCI Express Device Max Sections Per "
-                       "Record is 0x%" PRIx16 " and must be "
+                       "Record is 0x%" PRIx32 " and must be "
                        "more than zero.",
                        aer->max_sections_per_record);
        }
@@ -537,7 +537,7 @@
                fwts_failed(fw, LOG_LEVEL_HIGH,
                        "HESTInvalidRecordsToPreallocate",
                        "HEST PCI Express Bridge Number of Records "
-                       "to Preallocate is 0x%" PRIx16 " and must be "
+                       "to Preallocate is 0x%" PRIx32 " and must be "
                        "more than zero.",
                        aer->number_of_records_to_preallocate);
        }
@@ -546,7 +546,7 @@
                fwts_failed(fw, LOG_LEVEL_HIGH,
                        "HESTInvalidMaxSectionsPerRecord",
                        "HEST PCI Express Brdige Max Sections Per "
-                       "Record is 0x%" PRIx16 " and must be "
+                       "Record is 0x%" PRIx32 " and must be "
                        "more than zero.",
                        aer->max_sections_per_record);
        }
@@ -626,7 +626,7 @@
                fwts_failed(fw, LOG_LEVEL_HIGH,
                        "HESTInvalidRecordsToPreallocate",
                        "HEST Hardware Error Source Number of Records "
-                       "to Preallocate is 0x%" PRIx16 " and must be "
+                       "to Preallocate is 0x%" PRIx32 " and must be "
                        "more than zero.",
                        source->number_of_records_to_preallocate);
        }
@@ -635,7 +635,7 @@
                fwts_failed(fw, LOG_LEVEL_HIGH,
                        "HESTInvalidMaxSectionsPerRecord",
                        "HEST Hardware Error Source Max Sections Per "
-                       "Record is 0x%" PRIx16 " and must be "
+                       "Record is 0x%" PRIx32 " and must be "
                        "more than zero.",
                        source->max_sections_per_record);
        }
@@ -740,7 +740,7 @@
                fwts_failed(fw, LOG_LEVEL_HIGH,
                        "HESTInvalidRecordsToPreallocate",
                        "HEST Hardware Error Source Number of Records "
-                       "to Preallocate is 0x%" PRIx16 " and must be "
+                       "to Preallocate is 0x%" PRIx32 " and must be "
                        "more than zero.",
                        source->number_of_records_to_preallocate);
        }
@@ -749,7 +749,7 @@
                fwts_failed(fw, LOG_LEVEL_HIGH,
                        "HESTInvalidMaxSectionsPerRecord",
                        "HEST Hardware Error Source Max Sections Per "
-                       "Record is 0x%" PRIx16 " and must be "
+                       "Record is 0x%" PRIx32 " and must be "
                        "more than zero.",
                        source->max_sections_per_record);
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fwts-26.05.00/src/acpi/madt/madt.c 
new/fwts-26.07.00/src/acpi/madt/madt.c
--- old/fwts-26.05.00/src/acpi/madt/madt.c      2026-05-27 05:26:14.000000000 
+0200
+++ new/fwts-26.07.00/src/acpi/madt/madt.c      2026-07-20 06:36:33.000000000 
+0200
@@ -128,8 +128,8 @@
 #define SBBR_ACPI_MAJOR_VERSION 6
 
 struct acpi_madt_subtable_lengths {
-       unsigned short major_version;   /* from revision in FADT header */
-       unsigned short minor_version;   /* FADT field starting with 5.1 */
+       uint8_t major_version;          /* from revision in FADT header */
+       uint8_t minor_version;          /* FADT field starting with 5.1 */
        unsigned short madt_version;    /* MADT revision */
        unsigned short num_types;       /* types possible for this version */
        unsigned short lengths[NUM_SUBTABLE_TYPES];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fwts-26.05.00/src/acpi/mcfg/mcfg.c 
new/fwts-26.07.00/src/acpi/mcfg/mcfg.c
--- old/fwts-26.05.00/src/acpi/mcfg/mcfg.c      2026-05-27 05:26:14.000000000 
+0200
+++ new/fwts-26.07.00/src/acpi/mcfg/mcfg.c      2026-07-20 06:36:33.000000000 
+0200
@@ -199,7 +199,7 @@
        for (i = 0; i < nr; i++, config++) {
                fwts_log_info_verbatim(fw, "Configuration Entry #%d:", i);
                fwts_log_info_verbatim(fw, "  Base Address  : 0x%" PRIx64, 
config->base_address);
-               fwts_log_info_verbatim(fw, "  Segment       : %" PRIu8, 
config->pci_segment_group_number);
+               fwts_log_info_verbatim(fw, "  Segment       : %" PRIu16, 
config->pci_segment_group_number);
                fwts_log_info_verbatim(fw, "  Start bus     : %" PRIu8, 
config->start_bus_number);
                fwts_log_info_verbatim(fw, "  End bus       : %" PRIu8, 
config->end_bus_number);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fwts-26.05.00/src/acpi/tpm2/tpm2.c 
new/fwts-26.07.00/src/acpi/tpm2/tpm2.c
--- old/fwts-26.05.00/src/acpi/tpm2/tpm2.c      2026-05-27 05:26:14.000000000 
+0200
+++ new/fwts-26.07.00/src/acpi/tpm2/tpm2.c      2026-07-20 06:36:33.000000000 
+0200
@@ -51,11 +51,11 @@
 
        fwts_acpi_reserved_zero("TPM2", "Reserved", tpm2->reserved, &passed);
 
-       if (tpm2->start_method < 1 || tpm2->start_method >= 14) {
+       if (tpm2->start_method < 1 || tpm2->start_method == 14 || 
tpm2->start_method > 15) {
                passed = false;
                fwts_failed(fw, LOG_LEVEL_HIGH,
                        "TPM2BadStartMethod",
-                       "TPM2's Start Method must be between 0x1 and 0xd, got 
0x%" PRIx16,
+                       "TPM2's Start Method must be between 0x1 and 0xd or 
0xf, got 0x%" PRIx32,
                        tpm2->start_method);
        }
 
@@ -78,6 +78,24 @@
                                "got 0x%" PRIx32, (uint32_t) 
sizeof(fwts_acpi_table_tpm2) + 12,
                                (uint32_t) table->length);
                }
+
+               if (tpm2->start_method == 13 && table->length < 
sizeof(fwts_acpi_table_tpm2) + 16) {
+                       passed = false;
+                       fwts_failed(fw, LOG_LEVEL_HIGH,
+                               "TPM2BadPlatformParameters",
+                               "Table length must be at least 0x%" PRIx32 " if 
Start Method equals 13, "
+                               "got 0x%" PRIx32, (uint32_t) 
sizeof(fwts_acpi_table_tpm2) + 16,
+                               (uint32_t) table->length);
+               }
+
+               if (tpm2->start_method == 15 && table->length < 
sizeof(fwts_acpi_table_tpm2) + 12) {
+                       passed = false;
+                       fwts_failed(fw, LOG_LEVEL_HIGH,
+                               "TPM2BadPlatformParameters",
+                               "Table length must be at least 0x%" PRIx32 " if 
Start Method equals 15, "
+                               "got 0x%" PRIx32, (uint32_t) 
sizeof(fwts_acpi_table_tpm2) + 12,
+                               (uint32_t) table->length);
+               }
        }
 
        if (passed)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fwts-26.05.00/src/dmi/dmicheck/dmicheck.c 
new/fwts-26.07.00/src/dmi/dmicheck/dmicheck.c
--- old/fwts-26.05.00/src/dmi/dmicheck/dmicheck.c       2026-05-27 
05:26:14.000000000 +0200
+++ new/fwts-26.07.00/src/dmi/dmicheck/dmicheck.c       2026-07-20 
06:36:33.000000000 +0200
@@ -378,7 +378,7 @@
                return FWTS_ERROR;
 
        for (p = buf, total = count = 0; ; p += count) {
-               if (total >= sz) {
+               if (total > sz) {
                        close(fd);
                        return FWTS_ERROR;
                }
@@ -442,8 +442,12 @@
                        return NULL;
                }
                table = malloc(length);
-               if (table)
-                       memcpy(table, mem, length);
+               if (table && fwts_safe_memcpy(table, mem, length) != FWTS_OK) {
+                       fwts_log_info(fw, "SMBIOS table at %p cannot be read", 
(void *)addr);
+                       free(table);
+                       (void)fwts_munmap(mem, length);
+                       return NULL;
+               }
                (void)fwts_munmap(mem, length);
                return table;
        }
@@ -498,8 +502,12 @@
                        return NULL;
                }
                table = malloc(length);
-               if (table)
-                       memcpy(table, mem, length);
+               if (table && fwts_safe_memcpy(table, mem, length) != FWTS_OK) {
+                       fwts_log_info(fw, "SMBIOS table at %p cannot be read", 
(void *)addr);
+                       free(table);
+                       (void)fwts_munmap(mem, length);
+                       return NULL;
+               }
                (void)fwts_munmap(mem, length);
                return table;
        }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fwts-26.05.00/src/lib/include/fwts_tpm.h 
new/fwts-26.07.00/src/lib/include/fwts_tpm.h
--- old/fwts-26.05.00/src/lib/include/fwts_tpm.h        2026-05-27 
05:26:14.000000000 +0200
+++ new/fwts-26.07.00/src/lib/include/fwts_tpm.h        2026-07-20 
06:36:33.000000000 +0200
@@ -124,6 +124,13 @@
        EV_EFI_SPDM_DEVICE_AUTHORITY            = 0x800000e4,
 } fwts_tpmlog_event_type;
 
+/*
+ * H-CRTM resets PCR[0] to the locality-4 startup value (0...04, locality in
+ * the last octet) before extending the H-CRTM data; see TPM 2.0 Library
+ * Part 1, "H-CRTM before TPM2_Startup()".
+ */
+#define TPM2_HCRTM_PCR0_LOCALITY       0x04
+
 
 typedef struct {
        uint32_t pcr_index;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fwts-26.05.00/src/lib/include/fwts_version.h 
new/fwts-26.07.00/src/lib/include/fwts_version.h
--- old/fwts-26.05.00/src/lib/include/fwts_version.h    2026-05-27 
05:26:14.000000000 +0200
+++ new/fwts-26.07.00/src/lib/include/fwts_version.h    2026-07-20 
06:36:33.000000000 +0200
@@ -16,5 +16,5 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 
USA.
  *
  */
-#define FWTS_VERSION "V26.05.00"
-#define FWTS_DATE    "2026-05-27 03:26:14"
+#define FWTS_VERSION "V26.07.00"
+#define FWTS_DATE    "2026-07-20 04:36:33"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fwts-26.05.00/src/lib/src/Makefile.am 
new/fwts-26.07.00/src/lib/src/Makefile.am
--- old/fwts-26.05.00/src/lib/src/Makefile.am   2026-05-27 05:26:14.000000000 
+0200
+++ new/fwts-26.07.00/src/lib/src/Makefile.am   2026-07-20 06:36:33.000000000 
+0200
@@ -35,7 +35,7 @@
 endif
 
 libfwts_la_LIBADD =                            \
-       -lm -lpthread                                   \
+       -lm -lpthread -lz                               \
        $(libfwts_LDADD_BSD)                            \
        @GIO_LIBS@                                      \
        @GLIB_LIBS@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fwts-26.05.00/src/tpm/tpmevlog/tpmevlog.c 
new/fwts-26.07.00/src/tpm/tpmevlog/tpmevlog.c
--- old/fwts-26.05.00/src/tpm/tpmevlog/tpmevlog.c       2026-05-27 
05:26:14.000000000 +0200
+++ new/fwts-26.07.00/src/tpm/tpmevlog/tpmevlog.c       2026-07-20 
06:36:33.000000000 +0200
@@ -255,6 +255,7 @@
        fwts_spec_id_event_alg_sz *alg_sz;
        bool separator_seen[TPM2_FIRMWARE_PCR_COUNT] = { false };
        bool startuplocality_seen = false;
+       bool hcrtm_seen = false;
 
        /* specid_event_check */
        if (len < sizeof(fwts_pc_client_pcr_event)) {
@@ -327,7 +328,7 @@
                fwts_failed(fw, LOG_LEVEL_HIGH, "SpecIdEvAlgNumber",
                        "The number of Hash algorithms of SpecId event must "
                        "be set to a value of 0x01 or greater "
-                       "got 0x%" PRIx8 ".", specid_evcent->number_of_alg);
+                       "got 0x%" PRIx32 ".", specid_evcent->number_of_alg);
                return FWTS_ERROR;
        }
 
@@ -421,6 +422,13 @@
                        if ((!tpmevlog_parsed) && (alg_id == TPM2_ALG_SHA256) &&
                            (pcr_event2->event_type != EV_NO_ACTION) &&
                            (pcr_event2->pcr_index < TPM2_FIRMWARE_PCR_COUNT)) {
+                               /* H-CRTM reseeds PCR[0] before its digest is 
extended. */
+                               if (pcr_event2->event_type == 
EV_EFI_HCRTM_EVENT &&
+                                   pcr_event2->pcr_index == 0) {
+                                       
tpmevlog_pcrs.pcr[0][TPM2_SHA256_DIGEST_SIZE - 1] =
+                                               TPM2_HCRTM_PCR0_LOCALITY;
+                                       hcrtm_seen = true;
+                               }
                                
fwts_tpm_extend_pcr(tpmevlog_pcrs.pcr[pcr_event2->pcr_index],
                                                TPM2_SHA256_DIGEST_SIZE,
                                                alg_id,
@@ -454,7 +462,8 @@
                pdata += sizeof(event_size);
                len_remain -= sizeof(event_size);
 
-               if (pcr_event2->event_type == EV_NO_ACTION &&
+               if (!hcrtm_seen &&
+                   pcr_event2->event_type == EV_NO_ACTION &&
                    pcr_event2->pcr_index == 0 &&
                    event_size == 17 &&
                    memcmp(pdata, "StartupLocality", sizeof("StartupLocality")) 
== 0) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fwts-26.05.00/src/tpm/tpmevlogdump/tpmevlogdump.c 
new/fwts-26.07.00/src/tpm/tpmevlogdump/tpmevlogdump.c
--- old/fwts-26.05.00/src/tpm/tpmevlogdump/tpmevlogdump.c       2026-05-27 
05:26:14.000000000 +0200
+++ new/fwts-26.07.00/src/tpm/tpmevlogdump/tpmevlogdump.c       2026-07-20 
06:36:33.000000000 +0200
@@ -274,7 +274,7 @@
        fwts_log_info_verbatim(fw, "  Signature:                 %s", (char 
*)specid_evcent->signature);
        fwts_log_info_verbatim(fw, "  platformClass:             0x%8.8" 
PRIx32, specid_evcent->platform_class);
        fwts_log_info_verbatim(fw, "  specVersionMinor:          0x%" PRIx8, 
specid_evcent->spec_version_minor);
-       fwts_log_info_verbatim(fw, "  specVersionMajor:          0x%" PRIx8, 
specid_evcent->platform_class);
+       fwts_log_info_verbatim(fw, "  specVersionMajor:          0x%" PRIx8, 
specid_evcent->spec_version_major);
        fwts_log_info_verbatim(fw, "  specErrata:                0x%" PRIx8, 
specid_evcent->spec_errata);
        fwts_log_info_verbatim(fw, "  uintnSize:                 0x%" PRIx8, 
specid_evcent->uintn_size);
        fwts_log_info_verbatim(fw, "  NumberOfAlgorithms:        0x%8.8" 
PRIx32, specid_evcent->number_of_alg);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/fwts-26.05.00/src/uefi/uefibootpath/uefibootpath.c 
new/fwts-26.07.00/src/uefi/uefibootpath/uefibootpath.c
--- old/fwts-26.05.00/src/uefi/uefibootpath/uefibootpath.c      2026-05-27 
05:26:14.000000000 +0200
+++ new/fwts-26.07.00/src/uefi/uefibootpath/uefibootpath.c      2026-07-20 
06:36:33.000000000 +0200
@@ -379,9 +379,9 @@
                        }
                        if (u->stop_bits > 3) {
                                fwts_failed(fw, LOG_LEVEL_MEDIUM, 
"UEFIUARTDevPathConfInvalid",
-                                       "The Parity value of UART Device Path 
is %" PRIu8
+                                       "The Stop Bits value of UART Device 
Path is %" PRIu8
                                        " which is out of configuration range.",
-                                       u->parity);
+                                       u->stop_bits);
                                errors++;
                        }
                        break;

++++++ fwts.obsinfo ++++++
--- /var/tmp/diff_new_pack.6Jk98h/_old  2026-07-21 23:10:41.286887651 +0200
+++ /var/tmp/diff_new_pack.6Jk98h/_new  2026-07-21 23:10:41.290887788 +0200
@@ -1,5 +1,5 @@
 name: fwts
-version: 26.05.00
-mtime: 1779852374
-commit: 885403fe8580a49023cbdbb5dca5560a2da1256d
+version: 26.07.00
+mtime: 1784522193
+commit: b7c224c5c9950a7080a8023e8fb45abde2fdaa54
 

Reply via email to