[Tarantool-patches] [PATCH luajit] Make string to number conversions fail on NUL char

Igor Munkin imun at tarantool.org
Thu Mar 5 12:36:34 MSK 2020


Kirill,

Thanks! As you reminded, here is a ChangeLog entry:

@ChangeLog:
* Fixed string to number conversion: current implementation respects the
  buffer length (gh-4773).

On 05.03.20, Kirill Yukhin wrote:
> Hello,
> On 14 фев 02:57, Igor Munkin wrote:
> > The routine used for conversion a string representation to number
> > (lj_strscan_scan) doesn't respect the size of the given string/buffer.
> > Such behaviour leads to the following results:
> > 
> > | local a = tonumber("inf\x00imun")   -- the result is 'inf'
> > | local b = tonumber("\x36\x00\x80") -- the result is 6
> > 
> > The behaviour described above is similar to the one vanila Lua 5.1 has:
> > 
> > | $ ./lua -e 'print(_VERSION, tonumber("inf"..string.char(0).."imun"))'
> > | Lua 5.1	inf
> > 
> > However, the issue is fixed in Lua 5.2 and the results are the following:
> > | $ ./lua -e 'print(_VERSION, tonumber("inf"..string.char(0).."imun"))'
> > | Lua 5.2	nil
> > 
> > The patch introduces additional parameter to lj_strscan_scan routine to
> > detect whether there is nothing left after the null character.
> > 
> > Relates to tarantool#4773
> > 
> > Reported-by: Alexander Turenko <alexander.turenko at tarantool.org>
> > Signed-off-by: Igor Munkin <imun at tarantool.org>
> 
> I've checked your patch inti tarantool/luajit repo and
> bumped new version in 1.10, 2.2, 2.3 and master.
> 
> --
> Regards, Kirill Yukhin

Added to the corresponding release notes.

-- 
Best regards,
IM


More information about the Tarantool-patches mailing list