Fix intermittent crash in property_service_test

There is a race in the very_long_name_35166374 test of
property_service.  The test first sends a size value that is beyond
the limit that init will handle, then sends a dummy data value.
However, init closes the socket upon seeing the faulty size, and if
this happens before the test sends the dummy data, the test will crash
due to SIGPIPE.

Since there is no reason to send the dummy data at all, this change no
longer sends it to prevent the crash.  It also now checks explicitly
that init returns an error through the socket.

Bug: 73619375
Test: the unit test in question
Change-Id: I2565a69fa54910cee0e15fc798445e18c91156ec
This commit is contained in:
Tom Cherry 2018-02-20 10:40:26 -08:00
parent e1ae2ff9e4
commit b7ef7e7aff

View file

@ -45,11 +45,13 @@ TEST(property_service, very_long_name_35166374) {
// ...so we can send it a malformed request.
uint32_t msg = PROP_MSG_SETPROP2;
uint32_t size = 0xffffffff;
uint32_t data = 0xdeadbeef;
ASSERT_EQ(static_cast<ssize_t>(sizeof(msg)), send(fd, &msg, sizeof(msg), 0));
ASSERT_EQ(static_cast<ssize_t>(sizeof(size)), send(fd, &size, sizeof(size), 0));
ASSERT_EQ(static_cast<ssize_t>(sizeof(data)), send(fd, &data, sizeof(data), 0));
uint32_t result = 0;
ASSERT_EQ(static_cast<ssize_t>(sizeof(result)),
TEMP_FAILURE_RETRY(recv(fd, &result, sizeof(result), MSG_WAITALL)));
EXPECT_EQ(static_cast<uint32_t>(PROP_ERROR_READ_DATA), result);
ASSERT_EQ(0, close(fd));
}