Skip to content
Permalink
Browse files Browse the repository at this point in the history
Fix out of bounds read in ragged_cross_op.cc.
PiperOrigin-RevId: 369757702
Change-Id: Ie6e5d2c21513a8d56bf41fcf35960caf76e890f9
  • Loading branch information
mihaimaruseac authored and tensorflower-gardener committed Apr 21, 2021
1 parent efea03b commit 44b7f48
Showing 1 changed file with 30 additions and 0 deletions.
30 changes: 30 additions & 0 deletions tensorflow/core/kernels/ragged_cross_op.cc
Expand Up @@ -21,6 +21,7 @@ limitations under the License.
#include "tensorflow/core/framework/register_types.h"
#include "tensorflow/core/framework/tensor.h"
#include "tensorflow/core/framework/tensor_shape.h"
#include "tensorflow/core/platform/errors.h"
#include "tensorflow/core/platform/fingerprint.h"
#include "tensorflow/core/util/util.h"
#include "tensorflow/core/util/work_sharder.h"
Expand Down Expand Up @@ -466,16 +467,45 @@ class RaggedCrossOp : public OpKernel {
int next_dense = 0;
for (char c : input_order_) {
if (c == 'R') {
if (next_ragged >= ragged_values_list.size())
return errors::InvalidArgument(
"input_order \"", input_order_,
"\" specifies reading a ragged tensor value at index ",
next_ragged, " from a list of ", ragged_values_list.size(),
" values.");
if (next_ragged >= ragged_splits_list.size())
return errors::InvalidArgument(
"input_order \"", input_order_,
"\" specifies reading a ragged tensor split at index ",
next_ragged, " from a list of ", ragged_splits_list.size(),
" splits.");
TF_RETURN_IF_ERROR(BuildRaggedFeatureReader(
ragged_values_list[next_ragged], ragged_splits_list[next_ragged],
features));
next_ragged++;
} else if (c == 'S') {
if (next_sparse >= sparse_values_list.size())
return errors::InvalidArgument(
"input_order \"", input_order_,
"\" specifies reading a sparse tensor value at index ",
next_sparse, " from a list of ", sparse_values_list.size(),
" values.");
if (next_sparse >= sparse_indices_list.size())
return errors::InvalidArgument(
"input_order \"", input_order_,
"\" specifies reading a sparse tensor index at index ",
next_sparse, " from a list of ", sparse_indices_list.size(),
" indices.");
TF_RETURN_IF_ERROR(BuildSparseFeatureReader(
sparse_indices_list[next_sparse], sparse_values_list[next_sparse],
batch_size, features));
next_sparse++;
} else if (c == 'D') {
if (next_dense >= dense_list.size())
return errors::InvalidArgument(
"input_order \"", input_order_,
"\" specifies reading a dense tensor at index ", next_dense,
" from a list of ", dense_list.size(), " tensors.");
TF_RETURN_IF_ERROR(
BuildDenseFeatureReader(dense_list[next_dense++], features));
} else {
Expand Down

0 comments on commit 44b7f48

Please sign in to comment.