summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Steven Moreland <smoreland@google.com> 2021-05-27 02:08:32 +0000
committer Steven Moreland <smoreland@google.com> 2021-05-27 02:16:40 +0000
commit60762093b7530f31aa55cb1e30a82e7da3d15758 (patch)
tree00976beadef9e965fa4a906fed992f8d3e8f2424
parent3ca69777c5e0d96c8c95f102e41db429dc957445 (diff)
binder_rpc_fuzzer: avoid SIGPIPE
android::base::WriteFully was causing SIGPIPE to be sent when we hang up connections after the last fuzzer modification. Bug: N/A Test: binder_rpc_fuzzer for a few minutes Change-Id: I3fe20da26805134bb28284860116ca766d823b3f
-rw-r--r--libs/binder/tests/rpc_fuzzer/main.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/libs/binder/tests/rpc_fuzzer/main.cpp b/libs/binder/tests/rpc_fuzzer/main.cpp
index 072f8ddd07..9fc496f460 100644
--- a/libs/binder/tests/rpc_fuzzer/main.cpp
+++ b/libs/binder/tests/rpc_fuzzer/main.cpp
@@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-#include <android-base/file.h>
#include <android-base/logging.h>
#include <android-base/unique_fd.h>
#include <binder/Binder.h>
@@ -90,8 +89,10 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
if (provider.ConsumeBool()) {
std::vector<uint8_t> writeData = provider.ConsumeBytes<uint8_t>(
provider.ConsumeIntegralInRange<size_t>(0, provider.remaining_bytes()));
- CHECK(base::WriteFully(connections.at(idx).get(), writeData.data(),
- writeData.size()));
+ ssize_t size = TEMP_FAILURE_RETRY(send(connections.at(idx).get(), writeData.data(),
+ writeData.size(), MSG_NOSIGNAL));
+ CHECK(errno == EPIPE || size == writeData.size())
+ << size << " " << writeData.size() << " " << strerror(errno);
} else {
connections.erase(connections.begin() + idx); // hang up
}