File: gh-4773-tonumber-fail-on-NUL-char.test.lua

package info (click to toggle)
tarantool 2.6.0-1.4
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 85,412 kB
  • sloc: ansic: 513,775; cpp: 69,493; sh: 25,650; python: 19,190; perl: 14,973; makefile: 4,178; yacc: 1,329; sql: 1,074; pascal: 620; ruby: 190; awk: 18; lisp: 7
file content (24 lines) | stat: -rwxr-xr-x 612 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/env tarantool

local tap = require('tap')

local test = tap.test("Tarantool 4773")
test:plan(3)

-- Test file to demonstrate LuaJIT tonumber routine fails on NUL char,
-- details:
--     https://github.com/tarantool/tarantool/issues/4773

local t = {
  zero = '0',
  null = '\x00',
  tail = 'imun',
}

-- Since VM, Lua/C API and compiler use a single routine for conversion numeric
-- string to a number, test cases are reduced to the following:
test:is(tonumber(t.zero), 0)
test:is(tonumber(t.zero .. t.tail), nil)
test:is(tonumber(t.zero .. t.null .. t.tail), nil)

os.exit(test:check() and 0 or 1)