diff --git a/Demos/Host/LowLevel/MassStorageHost/MassStorageHost.c b/Demos/Host/LowLevel/MassStorageHost/MassStorageHost.c
index 79a559234c7e4c3c3cffbc15c3e59dbc6cd17368..a1febf20493033884df717c522852ee31a4178ac 100644
--- a/Demos/Host/LowLevel/MassStorageHost/MassStorageHost.c
+++ b/Demos/Host/LowLevel/MassStorageHost/MassStorageHost.c
@@ -224,8 +224,17 @@ void MassStorage_Task(void)
 				break;
 			}
 			
+			/* VendorID and ProductID are fixed-length non-null terminated strings - need to terminate them before displaying */
+			char VendorID[9];
+			char ProductID[17];
+			
+			memcpy(&VendorID, &InquiryData.VendorID, 8);
+			memcpy(&ProductID, &InquiryData.ProductID, 16);
+			VendorID[8]   = 0x00;
+			ProductID[16] = 0x00;
+
 			/* Print vendor and product names of attached device */
-			printf_P(PSTR("Vendor: %s, Product: %s\r\n"), InquiryData.VendorID, InquiryData.ProductID);
+			printf_P(PSTR("Vendor \"%s\", Product \"%s\"\r\n"), VendorID, ProductID);
 						
 			/* Wait until disk ready */
 			puts_P(PSTR("Waiting until ready.."));
diff --git a/Demos/Host/LowLevel/MassStorageHost/MassStorageHost.h b/Demos/Host/LowLevel/MassStorageHost/MassStorageHost.h
index a299b7008fbe81b68e56f21893680c360a8feca7..a5b84c2ebb1902632696186a3d0a7d17bd7d2ac2 100644
--- a/Demos/Host/LowLevel/MassStorageHost/MassStorageHost.h
+++ b/Demos/Host/LowLevel/MassStorageHost/MassStorageHost.h
@@ -43,6 +43,7 @@
 		#include <avr/power.h>
 		#include <stdio.h>
 		#include <ctype.h>
+		#include <string.h>
 
 		#include "ConfigDescriptor.h"