pelletier / go-toml

Go library for the TOML file format
https://github.com/pelletier/go-toml
Other
1.69k stars 206 forks source link

Encode: add bound check for uint64 > math.Int64 #785

Closed pelletier closed 2 years ago

pelletier commented 2 years ago

As brought up on #782, there is an asymetry between numbers go-toml can encode and decode. Specifically, unsigned numbers larger than math.Int64 could be encoded but not decoded.

We considered two options: allow decoding of those numbers, or prevent those numbers to be decoded.

Ultimately we decided to narrow the range of numbers to be encoded. The TOML specification only requires parsers to support at least the 64 bits integer range. Allowing larger numbers would create non-standard TOML documents, which may not be readable (at best) by other implementations. It is a safer default to generate documents valid by default. People who wish to deal with larger numbers can provide a custom type implementing encoding.TextMarshaler.

Refs #781

cc @jmank88