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;
}
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;
}
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;
}
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;
}
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;
}