Skip to content

Commit

Permalink
fix(grpc-transcode): filter out illegal INT(string) formats (#11367)
Browse files Browse the repository at this point in the history
  • Loading branch information
zhoujiexiong authored Jul 9, 2024
1 parent 7f649bc commit 1164374
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 1 deletion.
2 changes: 1 addition & 1 deletion apisix-master-0.rockspec
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ dependencies = {
"lua-resty-session = 3.10",
"opentracing-openresty = 0.1",
"lua-resty-radixtree = 2.9.1",
"lua-protobuf = 0.5.0-1",
"lua-protobuf = 0.5.2-1",
"lua-resty-openidc = 1.7.6-3",
"luafilesystem = 1.7.0-2",
"nginx-lua-prometheus-api7 = 0.20240201-1",
Expand Down
51 changes: 51 additions & 0 deletions t/plugin/grpc-transcode3.t
Original file line number Diff line number Diff line change
Expand Up @@ -525,3 +525,54 @@ location /t {
end
}
}
=== TEST 13: bugfix - filter out illegal INT(string) formats
--- config
location /t {
content_by_lua_block {
local pcall = pcall
local require = require
local protoc = require("protoc")
local pb = require("pb")
local pb_encode = pb.encode
assert(protoc:load [[
syntax = "proto3";
message IntStringPattern {
int64 value = 1;
}]])
local patterns
do
local function G(pattern)
return {pattern, true}
end
local function B(pattern)
return {pattern, [[bad argument #2 to '?' (number/'#number' expected for field 'value', got string)]]}
end
patterns = {
G(1), G(2), G(-3), G("#123"), G("0xabF"), G("#-0x123abcdef"), G("-#0x123abcdef"), G("#0x123abcdef"), G("123"),
B("#a"), B("+aaa"), B("#aaaa"), B("#-aa"),
}
end
for _, p in pairs(patterns) do
local pattern = {
value = p[1],
}
local status, err = pcall(pb_encode, "IntStringPattern", pattern)
local res = status
if not res then
res = err
end
assert(res == p[2])
end
ngx.say("passed")
}
}
--- response_body
passed

0 comments on commit 1164374

Please sign in to comment.