Return proper space-padded values where the PKCS #11 spec requires.

BUG=chromium:210090
TEST=unit, manual

Change-Id: Ia34dd35e43296fd875f1cbcd5bf04f3b3eb8d7c1
Reviewed-on: https://chromium-review.googlesource.com/184454
Reviewed-by: Darren Krahn <dkrahn@chromium.org>
Tested-by: Darren Krahn <dkrahn@chromium.org>
Reviewed-by: Gaurav Shah <gauravsh@chromium.org>
Commit-Queue: Darren Krahn <dkrahn@chromium.org>
diff --git a/chaps_test.cc b/chaps_test.cc
index 6fa3744..e7247f6 100644
--- a/chaps_test.cc
+++ b/chaps_test.cc
@@ -231,9 +231,8 @@
   EXPECT_EQ(CKR_OK, C_GetSlotInfo(1, &info));
   uint8_t spaces[64];
   memset(spaces, ' ', arraysize(spaces));
-  // TODO(dkrahn) Enable these checks. See crosbug.com/27295.
-  //EXPECT_EQ(0, memcmp(spaces, info.slotDescription, 64));
-  //EXPECT_EQ(0, memcmp(spaces, info.manufacturerID, 32));
+  EXPECT_EQ(0, memcmp(spaces, info.slotDescription, 64));
+  EXPECT_EQ(0, memcmp(spaces, info.manufacturerID, 32));
   EXPECT_EQ(1, info.flags);
 }
 
diff --git a/chaps_utility.h b/chaps_utility.h
index 62f0888..d29a44b 100644
--- a/chaps_utility.h
+++ b/chaps_utility.h
@@ -27,9 +27,9 @@
   size_t copy_size = source.length();
   if (copy_size > buffer_size)
     copy_size = buffer_size;
-  // TODO(dkrahn) Change the '\0' back to ' '. See crosbug.com/27295.
-  memset(buffer, '\0', buffer_size);
-  memcpy(buffer, source.data(), copy_size);
+  memset(buffer, ' ', buffer_size);
+  if (copy_size > 0)
+    memcpy(buffer, source.data(), copy_size);
 }
 
 inline void CopyVectorToCharBuffer(const std::vector<uint8_t>& source,
@@ -38,9 +38,9 @@
   size_t copy_size = source.size();
   if (copy_size > buffer_size)
     copy_size = buffer_size;
-  // TODO(dkrahn) Change the '\0' back to ' '. See crosbug.com/27295.
-  memset(buffer, '\0', buffer_size);
-  memcpy(buffer, &source.front(), copy_size);
+  memset(buffer, ' ', buffer_size);
+  if (copy_size > 0)
+    memcpy(buffer, &source.front(), copy_size);
 }
 
 // RVToString stringifies a PKCS #11 return value.  E.g. CKR_OK --> "CKR_OK".
diff --git a/slot_manager_test.cc b/slot_manager_test.cc
index 419edaf..8512cbf 100644
--- a/slot_manager_test.cc
+++ b/slot_manager_test.cc
@@ -255,7 +255,7 @@
   slot_manager_->GetTokenInfo(ic_, 0, &token_info);
   EXPECT_EQ(NULL, memchr(&token_info, 0xEE, sizeof(token_info)));
   string expected_label(kTokenLabel);
-  expected_label.resize(arraysize(token_info.label), 0);
+  expected_label.resize(arraysize(token_info.label), ' ');
   string actual_label(reinterpret_cast<char*>(token_info.label),
                       arraysize(token_info.label));
   EXPECT_EQ(expected_label, actual_label);