From 2b6281cd8104022cc468f4f4f21d270c01d073c8 Mon Sep 17 00:00:00 2001 From: Andrea Mazzoleni Date: Fri, 20 Mar 2026 11:14:19 +0100 Subject: [PATCH] Fix importing of serial from smartctl --- cmdline/mingw.c | 6 ++++++ cmdline/support.c | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/cmdline/mingw.c b/cmdline/mingw.c index 747cae9f..3780d07d 100644 --- a/cmdline/mingw.c +++ b/cmdline/mingw.c @@ -2569,6 +2569,12 @@ static void devattr_property(HANDLE h, char* serial, char* model, char* inter) } if (serial && *serial == 0 && desc->SerialNumberOffset) { + /* + * This is the RAW serial, maybe HEX encoded, maybe BYTES SWAPPED + * but we don't care because we just need any identifier + * + * If smartctl was not able to read it, we now accept anything + */ snprintf(serial, SMART_MAX, "%s", (char*)(buffer + desc->SerialNumberOffset)); strtrim(serial); } diff --git a/cmdline/support.c b/cmdline/support.c index bd4df3ce..25b425f3 100644 --- a/cmdline/support.c +++ b/cmdline/support.c @@ -1985,7 +1985,9 @@ int smartctl_attribute(FILE* f, const char* file, const char* name, struct smart strtrim(family); } else if (sscanf(s, "Device Model: %63[^\n]", model) == 1) { strtrim(model); - } else if (sscanf(s, "Serial number: %63s", serial) == 1) { + } else if (sscanf(s, "Serial number: %63s", serial) == 1) { /* SCSI */ + strtrim(serial); + } else if (sscanf(s, "Serial Number: %63s", serial) == 1) { /*ATA / NVMe */ strtrim(serial); /* SCSI */ /*