From 394fd4c21264cc48bcbb5f8439b5e64856c963f6 Mon Sep 17 00:00:00 2001 From: Jason Dillaman Date: Mon, 15 Dec 2014 12:37:05 -0500 Subject: [PATCH] librbd: fixed garbage output from test LibRBD.TestIOPP buffer::list::c_str does not actually provide a C-style, NULL terminated string. As a result, its use for console output resulted in stray garbage characters being printed. Fixes: #9405 Signed-off-by: Jason Dillaman --- src/test/librbd/test_librbd.cc | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/test/librbd/test_librbd.cc b/src/test/librbd/test_librbd.cc index 919de2af7448..1a43e7c132a0 100644 --- a/src/test/librbd/test_librbd.cc +++ b/src/test/librbd/test_librbd.cc @@ -908,9 +908,14 @@ void read_test_data(librbd::Image& image, const char *expected, off_t off, size_ ceph::bufferlist bl; read = image.read(off + total_read, len, bl); ASSERT_TRUE(read >= 0); + std::string bl_str(bl.c_str(), read); + printf("read: %u\n", (unsigned int) read); - printf("read: %s\nexpected: %s\n", bl.c_str(), expected); - ASSERT_EQ(0, memcmp(bl.c_str(), expected, expected_len)); + int result = memcmp(bl_str.c_str(), expected, expected_len); + if (result != 0) { + printf("read: %s\nexpected: %s\n", bl_str.c_str(), expected); + ASSERT_EQ(0, result); + } *passed = true; } -- 2.47.3