From 39041c23a9390f196b03f9b7173b6395f4459480 Mon Sep 17 00:00:00 2001 From: Vitaly Chikunov Date: Tue, 16 Jun 2020 13:07:18 +0300 Subject: [PATCH] Prevent crash on numeric unit conversion when disk is not in db Default unit is assumed C. Segmentation fault is happened in `inxi` run of `/usr/sbin/hddtemp -nq -u C /dev/sda` on ST3500514NS. --- hddtemp/src/hddtemp.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git hddtemp/src/hddtemp.c hddtemp/src/hddtemp.c index 7e54927..2213c7d 100644 --- hddtemp/src/hddtemp.c +++ hddtemp/src/hddtemp.c @@ -92,13 +92,17 @@ static void init_bus_types() { *******************************************************/ int value_to_unit(struct disk *dsk) { + unsigned char dsk_unit = 'C'; + + if (dsk->db_entry) + dsk_unit = dsk->db_entry->unit; switch(unit) { case CELSIUS: - if(dsk->db_entry->unit == 'F') + if(dsk_unit == 'F') return F_to_C(dsk->value); break; case FAHRENHEIT: - if(dsk->db_entry->unit == 'C') + if(dsk_unit == 'C') return C_to_F(dsk->value); default: break; -- 2.21.0