commit - 343103f27f4b93edad554204e0ac8a765f6da0cd
commit + 2167dc2f43915029dc216124beb0debcddd59e4e
blob - /dev/null
blob + 30e6d1e1e38f59482865b7ea1467e6bdd435dea5 (mode 644)
--- /dev/null
+++ tests/tarantool_msgpack.lua
+--[[
+https://github.com/tarantool/tarantool/issues/5184
+https://github.com/tarantool/tarantool/issues/4724
+https://github.com/tarantool/tarantool/issues/3900
+https://github.com/tarantool/tarantool/issues/5014 "\xd4\x02\x00"
+https://github.com/tarantool/tarantool/issues/5016 "\xd4\xfe\x00"
+https://github.com/tarantool/tarantool/issues/5017 "\xd4\x0f\x00"
+https://github.com/tarantool/tarantool/issues/206
+
+https://www.tarantool.io/ru/doc/latest/reference/reference_lua/msgpack/
+]]
+
+local msgpack = require("msgpack")
+local luzer = require("luzer")
+
+local function TestOneInput(buf)
+ local ok, res = pcall(msgpack.decode, buf)
+ if ok == true then
+ ok, res = pcall(msgpack.encode, res)
+ if ok == false and
+ string.find(res, "Too high nest level") then
+ return -1
+ end
+ assert(ok == true)
+ assert(res ~= nil)
+ end
+end
+
+if arg[1] then
+ local testcase = io.open(arg[1]):read("*all")
+ TestOneInput(testcase)
+ os.exit()
+end
+
+local script_path = debug.getinfo(1).source:match("@?(.*/)")
+
+local args = {
+ print_pcs = 1,
+ corpus = script_path .. "tarantool-corpus/msgpack_decode",
+ dict = script_path .. "tarantool-corpus/msgpack_decode.dict",
+ max_len = 4096,
+ artifact_prefix = "msgpack_decode_",
+ max_total_time = 60,
+ print_final_stats = 1,
+}
+luzer.Fuzz(TestOneInput, nil, args)