From f35156378198789cc504031ea02cbcf162bfa1d9 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 14 Feb 2014 17:32:04 +0100 Subject: [PATCH] Fix reading harddisk serials. It was falsely assumed that the harddisk serial is terminated by NULL. This is not the case, so we initialize the memory with zeros and copy only 20 bytes. --- src/_fireinfo/fireinfo.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/_fireinfo/fireinfo.c b/src/_fireinfo/fireinfo.c index 4ab2bfa..fc639d9 100644 --- a/src/_fireinfo/fireinfo.c +++ b/src/_fireinfo/fireinfo.c @@ -209,7 +209,9 @@ do_get_harddisk_serial(PyObject *o, PyObject *args) { if (!ioctl(fd, HDIO_GET_IDENTITY, &hd)) { char serial[21]; - strncpy(serial, (const char *)hd.serial_no, sizeof(serial)); + memset(serial, 0, sizeof(serial)); + + strncpy(serial, (const char *)hd.serial_no, sizeof(serial) - 1); if (serial[0]) return PyString_FromString(serial); -- 2.39.2