Fix some Coverity issues in the recent ZAM updates

This commit is contained in:
Tim Wojtulewicz 2022-09-21 10:52:29 -07:00
parent 20226f084b
commit 157a859104
3 changed files with 117 additions and 117 deletions

View file

@ -313,23 +313,23 @@ ZInstAux* ZAMCompiler::BuildCatAux(const ExprPList& args)
switch ( t->Tag() ) switch ( t->Tag() )
{ {
TYPE_BOOL: case TYPE_BOOL:
TYPE_INT: case TYPE_INT:
TYPE_COUNT: case TYPE_COUNT:
TYPE_DOUBLE: case TYPE_DOUBLE:
TYPE_TIME: case TYPE_TIME:
TYPE_ENUM: case TYPE_ENUM:
TYPE_PORT: case TYPE_PORT:
TYPE_ADDR: case TYPE_ADDR:
TYPE_SUBNET: case TYPE_SUBNET:
ca = std::make_unique<FixedCatArg>(t); ca = std::make_unique<FixedCatArg>(t);
break; break;
TYPE_STRING: case TYPE_STRING:
ca = std::make_unique<StringCatArg>(); ca = std::make_unique<StringCatArg>();
break; break;
TYPE_PATTERN: case TYPE_PATTERN:
ca = std::make_unique<PatternCatArg>(); ca = std::make_unique<PatternCatArg>();
break; break;

View file

@ -12,41 +12,41 @@ FixedCatArg::FixedCatArg(const TypePtr& _t) : t(_t)
{ {
switch ( t->Tag() ) switch ( t->Tag() )
{ {
TYPE_BOOL: case TYPE_BOOL:
max_size = 1; max_size = 1;
break; break;
TYPE_INT: case TYPE_INT:
max_size = 20; // sufficient for 64 bits max_size = 20; // sufficient for 64 bits
break; break;
TYPE_COUNT: case TYPE_COUNT:
max_size = 20; // sufficient for 64 bits max_size = 20; // sufficient for 64 bits
break; break;
TYPE_DOUBLE: case TYPE_DOUBLE:
TYPE_TIME: case TYPE_TIME:
max_size = 32; // from modp_dtoa2 documentatino max_size = 32; // from modp_dtoa2 documentatino
break; break;
TYPE_ENUM: case TYPE_ENUM:
{ {
size_t n = 0; size_t n = 0;
for ( auto e : t->AsEnumType()->Names() ) for ( const auto& e : t->AsEnumType()->Names() )
n += e.first.size(); n += e.first.size();
max_size = n; max_size = n;
break; break;
} }
TYPE_PORT: case TYPE_PORT:
max_size = 5 + 1 + 7; // <number> + / + "unknown max_size = 5 + 1 + 7; // <number> + / + "unknown
break; break;
TYPE_ADDR: case TYPE_ADDR:
max_size = 39; // for IPv6 max_size = 39; // for IPv6
break; break;
TYPE_SUBNET: case TYPE_SUBNET:
max_size = 39 + 1 + 3; // for IPv6 + / + <3-digits> max_size = 39 + 1 + 3; // for IPv6 + / + <3-digits>
break; break;
@ -64,27 +64,27 @@ void FixedCatArg::RenderInto(ZVal* zframe, int slot, char*& res)
switch ( t->Tag() ) switch ( t->Tag() )
{ {
TYPE_BOOL: case TYPE_BOOL:
*(res++) = z.AsInt() ? 'T' : 'F'; *(res++) = z.AsInt() ? 'T' : 'F';
break; break;
TYPE_INT: case TYPE_INT:
n = modp_litoa10(z.AsInt(), res); n = modp_litoa10(z.AsInt(), res);
res += n; res += n;
break; break;
TYPE_COUNT: case TYPE_COUNT:
n = modp_ulitoa10(z.AsCount(), res); n = modp_ulitoa10(z.AsCount(), res);
res += n; res += n;
break; break;
TYPE_DOUBLE: case TYPE_DOUBLE:
TYPE_TIME: case TYPE_TIME:
n = modp_dtoa2(z.AsDouble(), res, 6); n = modp_dtoa2(z.AsDouble(), res, 6);
res += n; res += n;
break; break;
TYPE_PATTERN: case TYPE_PATTERN:
text = z.AsPattern()->AsPattern()->PatternText(); text = z.AsPattern()->AsPattern()->PatternText();
*(res++) = '/'; *(res++) = '/';
strcpy(res, text); strcpy(res, text);
@ -92,13 +92,13 @@ void FixedCatArg::RenderInto(ZVal* zframe, int slot, char*& res)
*(res++) = '/'; *(res++) = '/';
break; break;
TYPE_ENUM: case TYPE_ENUM:
text = t->AsEnumType()->Lookup(z.AsInt()); text = t->AsEnumType()->Lookup(z.AsInt());
strcpy(res, text); strcpy(res, text);
res += strlen(text); res += strlen(text);
break; break;
TYPE_PORT: case TYPE_PORT:
{ {
uint32_t full_p = static_cast<uint32_t>(z.AsCount()); uint32_t full_p = static_cast<uint32_t>(z.AsCount());
zeek_uint_t p = full_p & ~PORT_SPACE_MASK; zeek_uint_t p = full_p & ~PORT_SPACE_MASK;
@ -132,13 +132,13 @@ void FixedCatArg::RenderInto(ZVal* zframe, int slot, char*& res)
break; break;
} }
TYPE_ADDR: case TYPE_ADDR:
str = z.AsAddr()->Get().AsString(); str = z.AsAddr()->Get().AsString();
strcpy(res, str.c_str()); strcpy(res, str.c_str());
res += strlen(str.c_str()); res += strlen(str.c_str());
break; break;
TYPE_SUBNET: case TYPE_SUBNET:
str = z.AsSubNet()->Get().AsString(); str = z.AsSubNet()->Get().AsString();
strcpy(res, str.c_str()); strcpy(res, str.c_str());
res += strlen(str.c_str()); res += strlen(str.c_str());

View file

@ -88,7 +88,7 @@ public:
protected: protected:
size_t ComputeMaxSize(ZVal* zframe, int slot) override; size_t ComputeMaxSize(ZVal* zframe, int slot) override;
const char* text; const char* text = nullptr;
size_t n = 0; size_t n = 0;
}; };