diff options
author | Lorenzo Colitti <lorenzo@google.com> | 2017-01-10 08:48:47 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-01-10 08:48:47 +0000 |
commit | 5f58ccb949cd2a4a8e1ca39eea5f95c003337827 (patch) | |
tree | 6e1f97011b9fe8663027557305ae2e305f1e19c6 | |
parent | bf660285fec6a7f2ef2ef75ad7440a34ccc7e452 (diff) | |
parent | 3c8ae064554e1b418a44bdc6fbb692df1d834ea7 (diff) | |
download | tests-5f58ccb949cd2a4a8e1ca39eea5f95c003337827.tar.gz |
Test that changing fd attributes doesn't change the socket UID. am: 267ba57456 am: fbb92420b1
am: 3c8ae06455
Change-Id: I22da5532bd61c7fcde9b99e75ced5ca374e2eaa2
-rwxr-xr-x | net/test/multinetwork_test.py | 43 |
1 files changed, 37 insertions, 6 deletions
diff --git a/net/test/multinetwork_test.py b/net/test/multinetwork_test.py index 2e148cd..f05c8e9 100755 --- a/net/test/multinetwork_test.py +++ b/net/test/multinetwork_test.py @@ -832,13 +832,14 @@ class UidRoutingTest(multinetwork_base.MultiNetworkBaseTest): def testIPv6InitialTablesHaveNoUIDs(self): self.CheckInitialTablesHaveNoUIDs(6) - def CheckGetAndSetRules(self, version): - def Random(): - return random.randint(1000000, 2000000) + @staticmethod + def _Random(): + return random.randint(1000000, 2000000) - start, end = tuple(sorted([Random(), Random()])) - table = Random() - priority = Random() + def CheckGetAndSetRules(self, version): + start, end = tuple(sorted([self._Random(), self._Random()])) + table = self._Random() + priority = self._Random() # Can't create a UID range to UID -1 because -1 is INVALID_UID... self.assertRaisesErrno( @@ -950,6 +951,36 @@ class UidRoutingTest(multinetwork_base.MultiNetworkBaseTest): def testIPv6RouteGet(self): self.CheckGetRoute(6, net_test.IPV6_ADDR) + def testChangeFdAttributes(self): + netid = random.choice(self.NETIDS) + uid = self._Random() + table = self._TableForNetid(netid) + remoteaddr = self.GetRemoteAddress(6) + s = socket(AF_INET6, SOCK_DGRAM, 0) + + def CheckSendFails(): + self.assertRaisesErrno(errno.ENETUNREACH, + s.sendto, "foo", (remoteaddr, 53)) + def CheckSendSucceeds(): + self.assertEquals(len("foo"), s.sendto("foo", (remoteaddr, 53))) + + CheckSendFails() + self.iproute.UidRangeRule(6, True, uid, uid, table, self.PRIORITY_UID) + try: + CheckSendFails() + os.fchown(s.fileno(), uid, -1) + CheckSendSucceeds() + os.fchown(s.fileno(), -1, -1) + CheckSendSucceeds() + os.fchown(s.fileno(), -1, 12345) + CheckSendSucceeds() + os.fchmod(s.fileno(), 0777) + CheckSendSucceeds() + os.fchown(s.fileno(), 0, -1) + CheckSendFails() + finally: + self.iproute.UidRangeRule(6, False, uid, uid, table, self.PRIORITY_UID) + class RulesTest(net_test.NetworkTest): |