diff --git a/src/context.h b/src/context.h index 346fd5d..22129a9 100644 --- a/src/context.h +++ b/src/context.h @@ -79,6 +79,9 @@ typedef struct nwipe_speedring_t_ // Arbitrary length, so far most paths don't exceed about 25 characters #define MAX_HWMON_PATH_LENGTH 100 +// 20 chracters for serial number plus null Byte +#define NWIPE_SERIALNUMBER_LENGTH 20 + typedef struct nwipe_context_t_ { /* @@ -109,7 +112,8 @@ typedef struct nwipe_context_t_ nwipe_device_t device_type; // Indicates an IDE, SCSI, or Compaq SMART device in enumerated form (int) char device_type_str[14]; // Indicates an IDE, SCSI, USB etc as per nwipe_device_t but in ascii int device_is_ssd; // 0 = no SSD, 1 = is a SSD - char device_serial_no[21]; // Serial number(processed, 20 characters plus null termination) of the device. + char device_serial_no[NWIPE_SERIALNUMBER_LENGTH + + 1]; // Serial number(processed, 20 characters plus null termination) of the device. int device_target; // The device target. u64 eta; // The estimated number of seconds until method completion. diff --git a/src/device.c b/src/device.c index 0678654..904492a 100644 --- a/src/device.c +++ b/src/device.c @@ -131,7 +131,7 @@ int check_device( nwipe_context_t*** c, PedDevice* dev, int dcount ) int fd; int idx; int r; - char tmp_serial[21]; + char tmp_serial[NWIPE_SERIALNUMBER_LENGTH + 1]; nwipe_device_t bus; int is_ssd; int check_HPA; // a flag that indicates whether we check for a HPA on this device @@ -252,7 +252,7 @@ int check_device( nwipe_context_t*** c, PedDevice* dev, int dcount ) ioctl( fd, HDIO_GET_IDENTITY, &next_device->identity ); close( fd ); - for( idx = 0; idx < 20; idx++ ) + for( idx = 0; idx < NWIPE_SERIALNUMBER_LENGTH; idx++ ) { if( isascii( next_device->identity.serial_no[idx] ) && !iscntrl( next_device->identity.serial_no[idx] ) ) { @@ -794,7 +794,8 @@ int nwipe_get_device_bus_type_and_serialno( char* device, nwipe_device_t* bus, i /* strip any leading or trailing spaces and left justify, +15 is the length of "Serial Number:" */ trim( &result[15] ); - strncpy( serialnumber, &result[15], 20 ); + strncpy( serialnumber, &result[15], NWIPE_SERIALNUMBER_LENGTH ); + serialnumber[NWIPE_SERIALNUMBER_LENGTH] = 0; } if( *bus == 0 ) diff --git a/src/logging.c b/src/logging.c index c288624..cb01e98 100644 --- a/src/logging.c +++ b/src/logging.c @@ -666,7 +666,7 @@ void nwipe_log_summary( nwipe_context_t** ptr, int nwipe_selected ) // char duration[5]; char duration[314]; char model[18]; - char serial_no[20]; + char serial_no[NWIPE_SERIALNUMBER_LENGTH + 1]; char exclamation_flag[2]; int hours; int minutes; @@ -875,7 +875,8 @@ void nwipe_log_summary( nwipe_context_t** ptr, int nwipe_selected ) model[17] = 0; /* Serial No. */ - strncpy( serial_no, c[i]->device_serial_no, 20 ); + strncpy( serial_no, c[i]->device_serial_no, NWIPE_SERIALNUMBER_LENGTH ); + serial_no[NWIPE_SERIALNUMBER_LENGTH] = 0; model[17] = 0; nwipe_log( NWIPE_LOG_NOTIMESTAMP,