From 9d10fa31f0c22f3e19e2ed9bbdd7abb76e38a3ce Mon Sep 17 00:00:00 2001 From: Amit Patankar <amitpatankar@google.com> Date: Mon, 21 Dec 2020 10:36:21 -0800 Subject: [PATCH] Create a fuzzer for `AreAttrValuesEqual` and `FastAreAttrValuesEqual`. PiperOrigin-RevId: 348489985 Change-Id: I26bbb2ff4fb873498f2d89386244f96c9dfa5942 --- tensorflow/core/framework/BUILD | 15 +--- .../fuzzing/AreAttrValuesEqual_fuzz.cc | 77 ------------------- tensorflow/security/fuzzing/BUILD | 10 --- 3 files changed, 2 insertions(+), 100 deletions(-) delete mode 100644 tensorflow/security/fuzzing/AreAttrValuesEqual_fuzz.cc diff --git a/tensorflow/core/framework/BUILD b/tensorflow/core/framework/BUILD index d678303e8f4..eec4af36e7e 100644 --- a/tensorflow/core/framework/BUILD +++ b/tensorflow/core/framework/BUILD @@ -37,7 +37,6 @@ load( package( default_visibility = [ "//tensorflow/core:__subpackages__", - "//tensorflow/security/fuzzing:__subpackages__", ], licenses = ["notice"], # Apache 2.0 ) @@ -1056,10 +1055,10 @@ tf_cc_test( size = "small", srcs = ["op_gen_lib_test.cc"], deps = [ - ":op_gen_lib", "//tensorflow/core:protos_all_cc", "//tensorflow/core:test", "//tensorflow/core:test_main", + "//tensorflow/core/framework:op_gen_lib", ], ) @@ -1109,7 +1108,6 @@ tf_cc_test( srcs = ["run_handler_test.cc"], linkstatic = tf_kernel_tests_linkstatic(), deps = [ - ":tensor_testutil", "//tensorflow/core:core_cpu", "//tensorflow/core:direct_session_internal", "//tensorflow/core:framework_internal", @@ -1119,6 +1117,7 @@ tf_cc_test( "//tensorflow/core:test", "//tensorflow/core:test_main", "//tensorflow/core:testlib", + "//tensorflow/core/framework:tensor_testutil", "//tensorflow/core/kernels:cwise_op", "//tensorflow/core/kernels:matmul_op", "//third_party/eigen3", @@ -1248,16 +1247,6 @@ cc_library( "//tensorflow/python:__pkg__", "//tensorflow/python/util:__pkg__", ], - deps = [ - ":api_def_proto_cc", - ":op_def_proto_cc", - ":tensor", - "//tensorflow/core:core_stringpiece", - "//tensorflow/core:framework", - "//tensorflow/core:lib", - "//tensorflow/core/lib/core:refcount", - "//tensorflow/core/lib/core:status", - ], ) cc_library( diff --git a/tensorflow/security/fuzzing/AreAttrValuesEqual_fuzz.cc b/tensorflow/security/fuzzing/AreAttrValuesEqual_fuzz.cc deleted file mode 100644 index 755dc9d2b87..00000000000 --- a/tensorflow/security/fuzzing/AreAttrValuesEqual_fuzz.cc +++ /dev/null @@ -1,77 +0,0 @@ -/* Copyright 2020 The TensorFlow Authors. All Rights Reserved. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -==============================================================================*/ -#include <fuzzer/FuzzedDataProvider.h> - -#include <cstdint> -#include <cstdlib> - -#include "absl/strings/match.h" -#include "tensorflow/core/framework/attr_value.pb.h" -#include "tensorflow/core/framework/attr_value_util.h" - -// This is a fuzzer for AreAttrValuesEqual and FastAreAttrValuesEqual. - -namespace { - -// A few helpers to construct AttrValue protos. -template <typename T> -tensorflow::AttrValue createAttrValue(T value) { - tensorflow::AttrValue ret; - SetAttrValue(value, &ret); - return ret; -} - -// A helper to do the comparison asserts. -template <typename T> -void compareValues(T value, T value_2) { - const tensorflow::AttrValue proto = createAttrValue(value); - const tensorflow::AttrValue proto_same = createAttrValue(value); - const tensorflow::AttrValue proto2 = createAttrValue(value_2); - - // Assert that the Fast and Regular are true. - assert(tensorflow::AreAttrValuesEqual(proto, proto_same)); - assert(tensorflow::FastAreAttrValuesEqual(proto, proto_same)); - // Assert that Fast and Regular for the random values. - assert(tensorflow::AreAttrValuesEqual(proto, proto2) == - tensorflow::FastAreAttrValuesEqual(proto, proto2)); -} - -extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { - FuzzedDataProvider fuzzed_data(data, size); - - // Choose random integers. - const int random_int = fuzzed_data.ConsumeIntegralInRange(1, 100); - const int random_int2 = fuzzed_data.ConsumeIntegralInRange(1, 1000); - compareValues(random_int, random_int2); - - // Choose random floats. - const float random_float = - fuzzed_data.ConsumeFloatingPointInRange(1.0f, 1000.0f); - const float random_float2 = - fuzzed_data.ConsumeFloatingPointInRange(1.0f, 1000.0f); - compareValues(random_float, random_float2); - - // Choose random strings. - const int content_size = fuzzed_data.ConsumeIntegralInRange(10, 300); - const std::string test_string = - fuzzed_data.ConsumeRandomLengthString(content_size); - const std::string test_string2 = - fuzzed_data.ConsumeRemainingBytesAsString(); - compareValues(test_string, test_string2); - - return 0; -} - -} // namespace diff --git a/tensorflow/security/fuzzing/BUILD b/tensorflow/security/fuzzing/BUILD index 71df37b7253..94c6134b643 100644 --- a/tensorflow/security/fuzzing/BUILD +++ b/tensorflow/security/fuzzing/BUILD @@ -27,16 +27,6 @@ tf_fuzz_target( ], ) -tf_fuzz_target( - name = "AreAttrValuesEqual_fuzz", - srcs = ["AreAttrValuesEqual_fuzz.cc"], - deps = [ - "//tensorflow/core/framework:attr_value_proto_cc", - "//tensorflow/core/framework:attr_value_util", - "@com_google_absl//absl/strings", - ], -) - tf_fuzz_target( name = "joinpath_fuzz", srcs = ["joinpath_fuzz.cc"],