libbinder: Return UNEXPECTED_NULL when appropriate

Return a meaningful and consistent error code when libbinder encounters
a null reference that it didn't expect.  This allows us to detect these
situations and cause a corresponding NullPointerException to be thrown
on the remote callsite.

While here, consolidate places we read vector<T> from a parcel into a
single templated version.  This dramatically reduces code duplication.

Bug: 25617251
Test: Integration tests asserting that vectors serialize correctly
      passes.  Integration test asserting that we throw
      NullPointerException on seeing a null reference also passes.

Change-Id: Ia59c264884ec89539c1b99cd7bd28ac201b5b7ac
1 file changed