Operational Defect Database

BugZero found this defect 20 days ago.

MongoDB | 2656809

IDL validator generation converts integer literals greater than the int32 maximum to floats

Last update date:

4/29/2024

Affected products:

MongoDB Server

Affected releases:

No affected releases provided.

Fixed releases:

No fixed releases provided.

Description:

Info

IDL binds integer literals parsed from validator expressions which are greater than 2^31-1 to floating-point expressions rather than integer expressions, even though C++ literals can be greater than 32 bits. This can result in generating validators that perform comparisons between floating points and integers, which maybe imprecise. e.g. the following field foo: type: long validator: { gte: 2147483647 } generates the following validator: void Ping::validateBlah(IDLParserContext& ctxt, const std::int64_t value) { if (!(value >= 2147483748.0)) { throwComparisonError(ctxt, "blah", ">="_sd, value, 2147483748.0); } }

Top User Comments


Steps to Reproduce


Additional Resources / Links

Share:

BugZero® Risk Score

What's this?

Coming soon

Status

Needs Scheduling

Learn More

Search:

...