Skip to content

Commit

Permalink
Merge pull request #49714 from geetachavan1/cherrypicks_ANDJ1
Browse files Browse the repository at this point in the history
Prevent another div by 0 in optimized pooling implementations TFLite
  • Loading branch information
mihaimaruseac committed May 26, 2021
2 parents 2e6ab28 + 2a2c7d5 commit dd08f7d
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 0 deletions.
4 changes: 4 additions & 0 deletions tensorflow/lite/kernels/pooling.cc
Expand Up @@ -87,6 +87,10 @@ TfLiteStatus GenericPrepare(TfLiteContext* context, TfLiteNode* node) {
auto padding = params->padding;
int out_width, out_height;

// Prevent division by 0 in optimized pooling implementations
TF_LITE_ENSURE(context, params->stride_height > 0);
TF_LITE_ENSURE(context, params->stride_width > 0);

data->padding = ComputePaddingHeightWidth(
params->stride_height, params->stride_width, 1, 1, height, width,
params->filter_height, params->filter_width, padding, &out_height,
Expand Down
13 changes: 13 additions & 0 deletions tensorflow/lite/kernels/pooling_test.cc
Expand Up @@ -1151,5 +1151,18 @@ TEST(FloatPoolingOpTest, L2PoolPaddingValidSlide1) {
EXPECT_THAT(m.GetOutput(), ElementsAreArray({3.5, 6.0, 6.5}));
}

#ifdef GTEST_HAS_DEATH_TEST
TEST(FloatPoolingOpTest, MaxPoolWithZeroStride) {
EXPECT_DEATH(
FloatPoolingOpModel m(BuiltinOperator_MAX_POOL_2D,
/*input=*/{TensorType_FLOAT32, {1, 2, 4, 1}},
/*filter_width=*/2, /*filter_height=*/2,
/*output=*/{TensorType_FLOAT32, {}},
/*padding=*/Padding_VALID,
/*stride_w=*/0, /*stride_h=*/0),
"Cannot allocate tensors");
}
#endif

} // namespace
} // namespace tflite

0 comments on commit dd08f7d

Please sign in to comment.