diff options
| author | Stefan Boberg <[email protected]> | 2023-10-06 10:27:47 +0200 |
|---|---|---|
| committer | GitHub <[email protected]> | 2023-10-06 10:27:47 +0200 |
| commit | 3a09799e45e3460cdd9a54a73e9932f58eb50e56 (patch) | |
| tree | 0e3734f14eab988b99f9ed3dcb6861022c442935 /src/zencore | |
| parent | 0.2.26 (diff) | |
| download | zen-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')
| -rw-r--r-- | src/zencore/include/zencore/string.h | 13 |
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) { |