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) {
}