[MONGOCRYPT-246] Provide descriptive error message instead of "BSON malformed" Created: 04/Feb/20  Updated: 30/Mar/22

Status: Backlog
Project: Libmongocrypt
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major - P3
Reporter: Oleg Pudeyev (Inactive) Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Related
is related to RUBY-2116 Verify BSON passed to libmongocrypt c... Closed
is related to RUBY-2115 Separate serialization of BSON fragme... Closed

 Description   

When running Ruby FLE tests I received this error from libmongocrypt:

BSON malformed (libmongocrypt error code 1)

It would be helpful if libmongocrypt indicated why it considers bson to be malformed.

In this case, we gave libmongocrypt an empty string. In Ruby trying to deserialize an empty string produces:

irb(main):003:0> Hash.from_bson(BSON::ByteBuffer.new(''))
Traceback (most recent call last):
        7: from /home/me/.rbenv/versions/2.6/bin/irb:23:in `<main>'
        6: from /home/me/.rbenv/versions/2.6/bin/irb:23:in `load'
        5: from /home/me/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/irb-1.0.0/exe/irb:11:in `<top (required)>'
        4: from (irb):3
        3: from (irb):3:in `rescue in irb_binding'
        2: from /home/me/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bson-4.7.0/lib/bson/hash.rb:90:in `from_bson'
        1: from /home/me/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/bson-4.7.0/lib/bson/hash.rb:90:in `get_hash'
RangeError (Attempted to read 4 bytes, but only 0 bytes remain)


Generated at Thu Feb 08 09:08:17 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.