Skip to content

Commit ec46a5e

Browse files
678098willhoy
andauthored
Fix[rmqa_compressiontransformerimpl]: check compression properties (#76)
Signed-off-by: Evgenii Malygin <emalygin@bloomberg.net> Signed-off-by: Will <2185386+willhoy@users.noreply.github.com> Co-authored-by: Will <2185386+willhoy@users.noreply.github.com>
1 parent 5e97e38 commit ec46a5e

1 file changed

Lines changed: 20 additions & 4 deletions

File tree

src/rmq/rmqa/rmqa_compressiontransformerimpl.cpp

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,17 +125,33 @@ rmqt::Result<> CompressionTransformerImpl::inverseTransform(
125125
bsl::shared_ptr<bsl::vector<uint8_t> >& data,
126126
rmqt::Properties& props)
127127
{
128+
128129
BSLS_ASSERT(props.headers);
129-
int64_t originalSize =
130-
(*props.headers)["sdk.transform.compression.size"].the<int64_t>();
130+
131+
rmqt::FieldTable::const_iterator sizeIt =
132+
props.headers->find("sdk.transform.compression.size");
133+
if (sizeIt == props.headers->end() || !sizeIt->second.is<int64_t>()) {
134+
BALL_LOG_ERROR << "Missing or invalid compression size header";
135+
return rmqt::Result<>("Missing or invalid compression size header");
136+
}
137+
138+
int64_t originalSize = sizeIt->second.the<int64_t>();
139+
131140
if (originalSize <= 0) {
132141
BALL_LOG_ERROR << "Invalid original size for decompression: "
133142
<< originalSize;
134143
return rmqt::Result<>("Invalid original size for decompression: " +
135144
bsl::to_string(originalSize));
136145
}
137-
bsl::string compressionAlg =
138-
(*props.headers)["sdk.transform.compression.alg"].the<bsl::string>();
146+
147+
rmqt::FieldTable::const_iterator algIt =
148+
props.headers->find("sdk.transform.compression.alg");
149+
if (algIt == props.headers->end() || !algIt->second.is<bsl::string>()) {
150+
BALL_LOG_ERROR << "Missing or invalid compression algorithm header";
151+
return rmqt::Result<>(
152+
"Missing or invalid compression algorithm header");
153+
}
154+
bsl::string compressionAlg = algIt->second.the<bsl::string>();
139155

140156
rmqt::Result<> result;
141157
if (compressionAlg == "zstd") {

0 commit comments

Comments
 (0)