summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@online.no>2023-01-31 12:46:10 +0100
committerTor Egge <Tor.Egge@online.no>2023-01-31 12:46:10 +0100
commit8dca74eb0879fe0e530c783d74a355747422aeec (patch)
tree1558b0d553400bf7a4e14ec01e82358ba8cfd1fd /searchlib
parent82e48e07e3d93521dfc53993a30d7f25ded4a440 (diff)
Use snprintf instead of sprintf.
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/tests/attribute/enumstore/enumstore_test.cpp4
-rw-r--r--searchlib/src/tests/attribute/stringattribute/stringattribute_test.cpp16
-rw-r--r--searchlib/src/tests/memoryindex/datastore/word_store_test.cpp2
-rw-r--r--searchlib/src/vespa/searchlib/predicate/predicate_range_term_expander.h15
-rw-r--r--searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp2
5 files changed, 21 insertions, 18 deletions
diff --git a/searchlib/src/tests/attribute/enumstore/enumstore_test.cpp b/searchlib/src/tests/attribute/enumstore/enumstore_test.cpp
index 4b35d0fcdf7..b3c7516777c 100644
--- a/searchlib/src/tests/attribute/enumstore/enumstore_test.cpp
+++ b/searchlib/src/tests/attribute/enumstore/enumstore_test.cpp
@@ -280,14 +280,14 @@ TEST(EnumStoreTest, test_hold_lists_and_generation)
uniques.reserve(100);
for (uint32_t i = 0; i < 100; ++i) {
char tmp[16];
- sprintf(tmp, i < 10 ? "enum0%u" : "enum%u", i);
+ snprintf(tmp, sizeof(tmp), i < 10 ? "enum0%u" : "enum%u", i);
uniques.emplace_back(tmp);
}
StringVector newUniques;
newUniques.reserve(100);
for (uint32_t i = 0; i < 100; ++i) {
char tmp[16];
- sprintf(tmp, i < 10 ? "unique0%u" : "unique%u", i);
+ snprintf(tmp, sizeof(tmp), i < 10 ? "unique0%u" : "unique%u", i);
newUniques.emplace_back(tmp);
}
uint32_t generation = 0;
diff --git a/searchlib/src/tests/attribute/stringattribute/stringattribute_test.cpp b/searchlib/src/tests/attribute/stringattribute/stringattribute_test.cpp
index 4bcba209c13..20373fbb3a9 100644
--- a/searchlib/src/tests/attribute/stringattribute/stringattribute_test.cpp
+++ b/searchlib/src/tests/attribute/stringattribute/stringattribute_test.cpp
@@ -80,7 +80,7 @@ testMultiValue(Attribute & attr, uint32_t numDocs)
uniqueStrings.reserve(numDocs - 1);
for (uint32_t i = 0; i < numDocs - 1; ++i) {
char unique[16];
- sprintf(unique, i < 10 ? "enum0%u" : "enum%u", i);
+ snprintf(unique, sizeof(unique), i < 10 ? "enum0%u" : "enum%u", i);
uniqueStrings.emplace_back(unique);
}
ASSERT_TRUE(std::is_sorted(uniqueStrings.begin(), uniqueStrings.end()));
@@ -89,7 +89,7 @@ testMultiValue(Attribute & attr, uint32_t numDocs)
newUniques.reserve(numDocs - 1);
for (uint32_t i = 0; i < numDocs - 1; ++i) {
char unique[16];
- sprintf(unique, i < 10 ? "unique0%u" : "unique%u", i);
+ snprintf(unique, sizeof(unique), i < 10 ? "unique0%u" : "unique%u", i);
newUniques.emplace_back(unique);
}
@@ -330,14 +330,14 @@ testSingleValue(Attribute & svsa, Config &cfg)
std::map<vespalib::string, uint32_t> enums;
// 10 unique strings
for (uint32_t i = 0; i < numDocs; ++i) {
- sprintf(tmp, "enum%u", i % 10);
+ snprintf(tmp,sizeof(tmp), "enum%u", i % 10);
EXPECT_TRUE( v.update(i, tmp) );
EXPECT_TRUE( v.getValueCount(i) == 1 );
EXPECT_TRUE( ! IEnumStore::Index(EntryRef(v.getEnum(i))).valid() );
if ((i % 10) == 9) {
v.commit();
for (uint32_t j = i - 9; j <= i; ++j) {
- sprintf(tmp, "enum%u", j % 10);
+ snprintf(tmp, sizeof(tmp), "enum%u", j % 10);
EXPECT_TRUE( strcmp(t = v.get(j), tmp) == 0 );
e1 = v.getEnum(j);
EXPECT_TRUE( v.findEnum(t, e2) );
@@ -354,15 +354,15 @@ testSingleValue(Attribute & svsa, Config &cfg)
// 1000 unique strings
for (uint32_t i = 0; i < numDocs; ++i) {
- sprintf(tmp, "unique%u", i);
+ snprintf(tmp, sizeof(tmp), "unique%u", i);
EXPECT_TRUE( v.update(i, tmp) );
- sprintf(tmp, "enum%u", i % 10);
+ snprintf(tmp, sizeof(tmp), "enum%u", i % 10);
EXPECT_TRUE( strcmp(v.get(i), tmp) == 0 );
if ((i % 10) == 9) {
//LOG(info, "commit: i = %u", i);
v.commit();
for (uint32_t j = i - 9; j <= i; ++j) {
- sprintf(tmp, "unique%u", j);
+ snprintf(tmp, sizeof(tmp), "unique%u", j);
EXPECT_TRUE( strcmp(t = v.get(j), tmp) == 0 );
e1 = v.getEnum(j);
EXPECT_TRUE( v.findEnum(t, e2) );
@@ -373,7 +373,7 @@ testSingleValue(Attribute & svsa, Config &cfg)
// check that enumX strings are removed (
for (uint32_t i = 0; i < 10; ++i) {
- sprintf(tmp, "enum%u", i);
+ snprintf(tmp, sizeof(tmp), "enum%u", i);
EXPECT_TRUE( !v.findEnum(tmp, e1) );
}
diff --git a/searchlib/src/tests/memoryindex/datastore/word_store_test.cpp b/searchlib/src/tests/memoryindex/datastore/word_store_test.cpp
index 29c032664c0..1de7b4a3efd 100644
--- a/searchlib/src/tests/memoryindex/datastore/word_store_test.cpp
+++ b/searchlib/src/tests/memoryindex/datastore/word_store_test.cpp
@@ -43,7 +43,7 @@ TEST(WordStoreTest, add_word_triggers_change_of_buffer)
uint32_t lastId = 0;
char wordStr[10];
for (;;++word) {
- sprintf(wordStr, "%6zu", word);
+ snprintf(wordStr, sizeof(wordStr), "%6zu", word);
// all words uses 12 bytes (include padding)
EntryRef r = ws.addWord(std::string(wordStr));
EXPECT_EQ(std::string(wordStr), ws.getWord(r));
diff --git a/searchlib/src/vespa/searchlib/predicate/predicate_range_term_expander.h b/searchlib/src/vespa/searchlib/predicate/predicate_range_term_expander.h
index 90792912e64..42de8646091 100644
--- a/searchlib/src/vespa/searchlib/predicate/predicate_range_term_expander.h
+++ b/searchlib/src/vespa/searchlib/predicate/predicate_range_term_expander.h
@@ -48,9 +48,10 @@ void PredicateRangeTermExpander::expand(const vespalib::string &key, int64_t sig
vespalib::Issue::report("predicate_range_term_expander: Search outside bounds should have been rejected by ValidatePredicateSearcher.");
return;
}
- char buffer[21 * 2 + 3 + key.size()]; // 2 numbers + punctuation + key
+ size_t buffer_size = 21 * 2 + 3 + key.size(); // 2 numbers + punctuation + key
+ char buffer[buffer_size];
int size;
- int prefix_size = sprintf(buffer, "%s=", key.c_str());
+ int prefix_size = snprintf(buffer, buffer_size, "%s=", key.c_str());
bool negative = signed_value < 0;
uint64_t value;
int max_levels;
@@ -64,7 +65,7 @@ void PredicateRangeTermExpander::expand(const vespalib::string &key, int64_t sig
}
int64_t edge_interval = (value / _arity) * _arity;
- size = sprintf(buffer + prefix_size, "%" PRIu64, edge_interval);
+ size = snprintf(buffer + prefix_size, buffer_size - prefix_size, "%" PRIu64, edge_interval);
handler.handleEdge(vespalib::stringref(buffer, prefix_size + size),
value - edge_interval);
@@ -75,13 +76,15 @@ void PredicateRangeTermExpander::expand(const vespalib::string &key, int64_t sig
if (start + level_size - 1 > (uint64_t(0)-LLONG_MIN)) {
break;
}
- size = sprintf(buffer + prefix_size, "%" PRIu64 "-%" PRIu64,
- start + level_size - 1, start);
+ size = snprintf(buffer + prefix_size, buffer_size - prefix_size,
+ "%" PRIu64 "-%" PRIu64,
+ start + level_size - 1, start);
} else {
if (start + level_size - 1 > LLONG_MAX) {
break;
}
- size = sprintf(buffer + prefix_size, "%" PRIu64 "-%" PRIu64,
+ size = snprintf(buffer + prefix_size, buffer_size - prefix_size,
+ "%" PRIu64 "-%" PRIu64,
start, start + level_size - 1);
}
handler.handleRange(vespalib::stringref(buffer, prefix_size + size));
diff --git a/searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp b/searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp
index c6ae9c00e49..98a9568e4e8 100644
--- a/searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp
+++ b/searchlib/src/vespa/searchlib/transactionlog/translogserver.cpp
@@ -124,7 +124,7 @@ TransLogServer::TransLogServer(FNET_Transport & transport, const vespalib::strin
}
exportRPC(*_supervisor);
char listenSpec[32];
- sprintf(listenSpec, "tcp/%d", listenPort);
+ snprintf(listenSpec, sizeof(listenSpec), "tcp/%d", listenPort);
bool listenOk(false);
for (int i(600); !listenOk && i; i--) {
if (_supervisor->Listen(listenSpec)) {