Package: thermald Version: 1.7.0-5 Severity: critical Tags: patch Justification: breaks the whole system
Dear Maintainer, 0002-Don-t-keep-on-reading-a-sensor-if-the-temperature-is.patch, added in 1.7.0-5, introduces a new cthd_sensor data member temp_unreadable but fails to initialise it. This causes nondeterministic behaviour. If any bits of the uninitialised boolean are nonzero, it will be evaluate to true, and the sensor will be silently disabled, causing loss of temperature control. This bug is critical because loss of temperature control risks physical hardware damage. Attached patch initialises temp_unreadable to restore temperature control. Kind regards, Ben. -- System Information: Debian Release: buster/sid APT prefers unstable APT policy: (500, 'unstable') Architecture: amd64 (x86_64) Kernel: Linux 4.15.0-2-amd64 (SMP w/8 CPU cores) Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8), LANGUAGE=en_GB:en (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) Versions of packages thermald depends on: ii libc6 2.27-3 ii libdbus-1-3 1.12.6-2 ii libdbus-glib-1-2 0.110-2 ii libgcc1 1:8-20180414-1 ii libglib2.0-0 2.56.1-2 ii libstdc++6 8-20180414-1 ii libxml2 2.9.4+dfsg1-6.1 ii lsb-base 9.20170808 thermald recommends no packages. thermald suggests no packages. -- Configuration Files: /etc/thermald/thermal-conf.xml changed: <?xml version="1.0"?> <ThermalConfiguration> <Platform> <Name>Passive control of CPU temperature</Name> <ProductName>*</ProductName> <Preference>QUIET</Preference> <ThermalZones> <ThermalZone> <Type>cpu</Type> <TripPoints> <TripPoint> <Temperature>80000</Temperature> <type>passive</type> </TripPoint> </TripPoints> </ThermalZone> </ThermalZones> </Platform> </ThermalConfiguration> -- no debconf information
--- src/thd_sensor.cpp.orig 2018-04-20 10:23:54.571949701 +1200 +++ src/thd_sensor.cpp 2018-04-20 10:24:17.291460842 +1200 @@ -28,7 +28,7 @@ cthd_sensor::cthd_sensor(int _index, std::string control_path, std::string _type_str, int _type) : index(_index), type(_type), sensor_sysfs(control_path.c_str()), sensor_active( - false), type_str(_type_str), async_capable(false), virtual_sensor(false), thresholds(0) { + false), type_str(_type_str), async_capable(false), virtual_sensor(false), temp_unreadable(false), thresholds(0) { }