From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp41.i.mail.ru (smtp41.i.mail.ru [94.100.177.101]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dev.tarantool.org (Postfix) with ESMTPS id AC6C6469719 for ; Thu, 5 Mar 2020 10:49:40 +0300 (MSK) Date: Thu, 5 Mar 2020 10:49:39 +0300 From: Kirill Yukhin Message-ID: <20200305074939.f2ucx2acn2phm2kc@tarantool.org> References: <62003dc4b5a3672d02c3ec599b5ecb65a557d6b5.1581635592.git.imun@tarantool.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <62003dc4b5a3672d02c3ec599b5ecb65a557d6b5.1581635592.git.imun@tarantool.org> Subject: Re: [Tarantool-patches] [PATCH luajit] Make string to number conversions fail on NUL char List-Id: Tarantool development patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Igor Munkin Cc: tarantool-patches@dev.tarantool.org 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 > Signed-off-by: Igor Munkin 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