From 708ec2b8142719fd8826e5265b65303a9d8339ad Mon Sep 17 00:00:00 2001 From: Dan Mick Date: Tue, 1 Dec 2015 14:38:48 -0800 Subject: [PATCH] tests and tools/scratchtool: Don't attempt to use NULL xattr Prior commit changes rados{striper}_getxattrs_next to be able to return NULL in the 'val' param. Handle that. Fixes: #13944 Signed-off-by: Dan Mick --- src/test/librados/c_read_operations.cc | 5 +++-- src/test/librados/io.cc | 8 ++++---- src/test/libradosstriper/io.cc | 4 ++-- src/tools/scratchtool.c | 2 +- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/test/librados/c_read_operations.cc b/src/test/librados/c_read_operations.cc index d80fcdfa2eac..7fab5cf4e992 100644 --- a/src/test/librados/c_read_operations.cc +++ b/src/test/librados/c_read_operations.cc @@ -101,10 +101,11 @@ protected: while (i < len) { ASSERT_EQ(0, rados_getxattrs_next(iter, (const char**) &key, (const char**) &val, &val_len)); - if (key == NULL || (val_len == 0 && val == NULL)) + if (key == NULL) break; EXPECT_EQ(std::string(keys[i]), std::string(key)); - EXPECT_EQ(0, memcmp(vals[i], val, val_len)); + if (val != NULL) + EXPECT_EQ(0, memcmp(vals[i], val, val_len)); EXPECT_EQ(lens[i], val_len); ++i; } diff --git a/src/test/librados/io.cc b/src/test/librados/io.cc index cb37c45428cc..e4af869744b0 100644 --- a/src/test/librados/io.cc +++ b/src/test/librados/io.cc @@ -559,11 +559,11 @@ TEST_F(LibRadosIo, XattrIter) { break; } ASSERT_LT(num_seen, 2); - if ((strcmp(name, attr1) == 0) && (memcmp(val, attr1_buf, len) == 0)) { + if ((strcmp(name, attr1) == 0) && (val != NULL) && (memcmp(val, attr1_buf, len) == 0)) { num_seen++; continue; } - else if ((strcmp(name, attr2) == 0) && (memcmp(val, attr2_buf, len) == 0)) { + else if ((strcmp(name, attr2) == 0) && (val != NULL) && (memcmp(val, attr2_buf, len) == 0)) { num_seen++; continue; } @@ -1109,11 +1109,11 @@ TEST_F(LibRadosIoEC, XattrIter) { break; } ASSERT_LT(num_seen, 2); - if ((strcmp(name, attr1) == 0) && (memcmp(val, attr1_buf, len) == 0)) { + if ((strcmp(name, attr1) == 0) && (val != NULL) && (memcmp(val, attr1_buf, len) == 0)) { num_seen++; continue; } - else if ((strcmp(name, attr2) == 0) && (memcmp(val, attr2_buf, len) == 0)) { + else if ((strcmp(name, attr2) == 0) && (val != NULL) && (memcmp(val, attr2_buf, len) == 0)) { num_seen++; continue; } diff --git a/src/test/libradosstriper/io.cc b/src/test/libradosstriper/io.cc index 9e56faeb0f26..2f931e5e00f6 100644 --- a/src/test/libradosstriper/io.cc +++ b/src/test/libradosstriper/io.cc @@ -357,11 +357,11 @@ TEST_F(StriperTest, XattrIter) { break; } ASSERT_LT(num_seen, 2) << "Extra attribute : " << name; - if ((strcmp(name, "attr1") == 0) && (memcmp(val, attr1_buf, len) == 0)) { + if ((strcmp(name, "attr1") == 0) && (val != NULL) && (memcmp(val, attr1_buf, len) == 0)) { num_seen++; continue; } - else if ((strcmp(name, "attr2") == 0) && (memcmp(val, attr2_buf, len) == 0)) { + else if ((strcmp(name, "attr2") == 0) && (val != NULL) && (memcmp(val, attr2_buf, len) == 0)) { num_seen++; continue; } diff --git a/src/tools/scratchtool.c b/src/tools/scratchtool.c index 17d5c6b09b9a..19d5e01d2d36 100644 --- a/src/tools/scratchtool.c +++ b/src/tools/scratchtool.c @@ -80,7 +80,7 @@ static int do_rados_getxattrs(rados_ioctx_t io_ctx, const char *oid, for (i = 0; i < nval; ++i) { if (strcmp(exkeys[i], key)) continue; - if ((len == strlen(exvals[i]) + 1) && (!strcmp(exvals[i], val))) { + if ((len == strlen(exvals[i]) + 1) && (val != NULL) && (!strcmp(exvals[i], val))) { nfound++; break; } -- 2.47.3