Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_38905368
tensorflow
提交
4b83eaab
T
tensorflow
项目概览
qq_38905368
/
tensorflow
与 Fork 源项目一致
从无法访问的项目Fork
通知
5
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
tensorflow
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
4b83eaab
编写于
12月 13, 2018
作者:
M
Mihai Maruseac
提交者:
TensorFlower Gardener
12月 13, 2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Validate buffer in tflite::FlatBufferModel::BuildFromBuffer.
PiperOrigin-RevId: 225400229
上级
f1784d91
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
36 addition
and
0 deletion
+36
-0
tensorflow/lite/model.cc
tensorflow/lite/model.cc
+18
-0
tensorflow/lite/model.h
tensorflow/lite/model.h
+18
-0
未找到文件。
tensorflow/lite/model.cc
浏览文件 @
4b83eaab
...
...
@@ -121,6 +121,24 @@ std::unique_ptr<FlatBufferModel> FlatBufferModel::BuildFromBuffer(
return
model
;
}
std
::
unique_ptr
<
FlatBufferModel
>
FlatBufferModel
::
VerifyAndBuildFromBuffer
(
const
char
*
buffer
,
size_t
buffer_size
,
TfLiteVerifier
*
verifier
,
ErrorReporter
*
error_reporter
)
{
error_reporter
=
ValidateErrorReporter
(
error_reporter
);
flatbuffers
::
Verifier
base_verifier
(
reinterpret_cast
<
const
uint8_t
*>
(
buffer
),
buffer_size
);
if
(
!
VerifyModelBuffer
(
base_verifier
))
{
return
nullptr
;
}
if
(
verifier
&&
!
verifier
->
Verify
(
buffer
,
buffer_size
,
error_reporter
))
{
return
nullptr
;
}
return
BuildFromBuffer
(
buffer
,
buffer_size
,
error_reporter
);
}
std
::
unique_ptr
<
FlatBufferModel
>
FlatBufferModel
::
BuildFromModel
(
const
tflite
::
Model
*
model_spec
,
ErrorReporter
*
error_reporter
)
{
error_reporter
=
ValidateErrorReporter
(
error_reporter
);
...
...
tensorflow/lite/model.h
浏览文件 @
4b83eaab
...
...
@@ -80,10 +80,28 @@ class FlatBufferModel {
// is destroyed. Caller retains ownership of `error_reporter` and must ensure
// its lifetime is longer than the FlatBufferModel instance.
// Returns a nullptr in case of failure.
// NOTE: this does NOT validate the buffer so it should NOT be called on
// invalid/untrusted input. Use VerifyAndBuildFromBuffer in that case
static
std
::
unique_ptr
<
FlatBufferModel
>
BuildFromBuffer
(
const
char
*
buffer
,
size_t
buffer_size
,
ErrorReporter
*
error_reporter
=
DefaultErrorReporter
());
// Verifies whether the content of the buffer is legit, then builds a model
// based on the pre-loaded flatbuffer.
// The verifier argument is an additional optional verifier for the buffer. By
// default, we always check with tflite::VerifyModelBuffer. If verifier is
// supplied, the buffer is checked against the verifier after the check
// against tflite::VerifyModelBuilder.
// The caller retains ownership of the buffer and should keep it alive until
// the returned object is destroyed. Caller retains ownership of
// `error_reporter` and must ensure its lifetime is longer than the
// FlatBufferModel instance.
// Returns a nullptr in case of failure.
static
std
::
unique_ptr
<
FlatBufferModel
>
VerifyAndBuildFromBuffer
(
const
char
*
buffer
,
size_t
buffer_size
,
TfLiteVerifier
*
verifier
=
nullptr
,
ErrorReporter
*
error_reporter
=
DefaultErrorReporter
());
// Builds a model directly from a flatbuffer pointer. The caller retains
// ownership of the buffer and should keep it alive until the returned object
// is destroyed. Caller retains ownership of `error_reporter` and must ensure
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录