aboutsummaryrefslogtreecommitdiff
path: root/src/zencore/include
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2023-10-06 10:27:47 +0200
committerGitHub <[email protected]>2023-10-06 10:27:47 +0200
commit3a09799e45e3460cdd9a54a73e9932f58eb50e56 (patch)
tree0e3734f14eab988b99f9ed3dcb6861022c442935 /src/zencore/include
parent0.2.26 (diff)
downloadzen-3a09799e45e3460cdd9a54a73e9932f58eb50e56.tar.xz
zen-3a09799e45e3460cdd9a54a73e9932f58eb50e56.zip
reject known bad bucket names in structured cache (#452)v0.2.27-pre0
* added string_view helpers for ParseHexBytes/ParseHexNumber * reject known bad buckets in structured cache put handler (32-character hex bucket names are rejected) * also added bucket rejection logic to bucket discovery * added rejected_writes stat to HttpStructuredCache
Diffstat (limited to 'src/zencore/include')
-rw-r--r--src/zencore/include/zencore/string.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/zencore/include/zencore/string.h b/src/zencore/include/zencore/string.h
index b26407005..2319d7ade 100644
--- a/src/zencore/include/zencore/string.h
+++ b/src/zencore/include/zencore/string.h
@@ -556,6 +556,12 @@ ParseHexBytes(const char* InputString, size_t CharacterCount, uint8_t* OutPtr)
return (allBits & 0x80) == 0;
}
+inline bool
+ParseHexBytes(std::string_view InputString, uint8_t* OutPtr)
+{
+ return ParseHexBytes(InputString.data(), InputString.size(), OutPtr);
+}
+
inline void
ToHexBytes(const uint8_t* InputData, size_t ByteCount, char* OutString)
{
@@ -575,6 +581,7 @@ ParseHexNumber(const char* InputString, size_t CharacterCount, uint8_t* OutPtr)
uint8_t allBits = 0;
+ // This assumes little-endian
InputString += CharacterCount;
while (CharacterCount)
{
@@ -593,6 +600,12 @@ ParseHexNumber(const char* InputString, size_t CharacterCount, uint8_t* OutPtr)
return (allBits & 0x80) == 0;
}
+inline bool
+ParseHexNumber(std::string_view InputString, uint8_t* OutPtr)
+{
+ return ParseHexNumber(InputString.data(), InputString.size(), OutPtr);
+}
+
inline void
ToHexNumber(const uint8_t* InputData, size_t ByteCount, char* OutString)
{