Views
No views yet
.engine file.runnerStateBuffer is serialized as PluginFieldType::kUNKNOWN with mRunnerStateBuffer.size().fc->fields[i].data.fc->fields[i].type or fc->fields[i].length.dispatcher->getSerializationSize(), not the actual serialized field length.runnerStateBuffer reaches the runtime creator.5302b288c5603895508711bdf2df11dc29c8ad921plugin/bertQKVToContextPlugin/qkvToContextPlugin.cpp
2plugin/bertQKVToContextPlugin/mhaRunner.cu
3plugin/common/plugin.cpp
4include/NvInferPluginBase.h
5include/NvInferRuntime.h1README.md
2qkv_runnerstate_harness.cpp
3qkv_runnerstate_fixed_harness.cpp
4expected_vulnerable_asan_output.txt
5expected_fixed_output.txt
6qkv_runnerstate_proposed_patch.diff
7tensorrt_qkv_key_lines.txt
8description_for_huntr.md
9runtime_poc_requirements.md
10NO_REAL_ENGINE_FILE_INCLUDED.txt1clang++ -std=c++17 -fsanitize=address -g -O1 qkv_runnerstate_harness.cpp -o qkv_runnerstate_harness
2./qkv_runnerstate_harness1ERROR: AddressSanitizer: heap-buffer-overflow
2READ of size 4expected_vulnerable_asan_output.txt1clang++ -std=c++17 -fsanitize=address -g -O1 qkv_runnerstate_fixed_harness.cpp -o qkv_runnerstate_fixed_harness
2./qkv_runnerstate_fixed_harnessRejected safely: invalid runnerStateBuffer length: rejected before deserialize.engine/.trt/.mytrtfile.runnerStateBuffer.length to reach:createPlugin(..., TensorRTPhase::kRUNTIME)PluginField.length.1field.name = "runnerStateBuffer"
2field.type = PluginFieldType::kUNKNOWN
3field.data = non-null
4field.length = shorter than dispatcher->getSerializationSize()runnerStateBuffer field metadata before deserialization:1PLUGIN_VALIDATE(fc->fields[i].type == PluginFieldType::kUNKNOWN,
2 "invalid runnerStateBuffer field type");
3runnerStateBufferLength = fc->fields[i].length;
4runnerStateBuffer = static_cast<void const*>(fc->fields[i].data);1PLUGIN_VALIDATE(runnerStateBufferLength == expectedSerializationSize,
2 "invalid runnerStateBuffer field length");