@@ -2670,13 +2670,40 @@ def testBindBrEdrL2capSocket(self):
2670
2670
addr = f .getsockname ()
2671
2671
self .assertEqual (addr , (socket .BDADDR_ANY , psm ))
2672
2672
2673
+ @unittest .skipUnless (HAVE_SOCKET_BLUETOOTH_L2CAP , 'Bluetooth L2CAP sockets required for this test' )
2674
+ def testBadL2capAddr (self ):
2675
+ with socket .socket (socket .AF_BLUETOOTH , socket .SOCK_SEQPACKET , socket .BTPROTO_L2CAP ) as f :
2676
+ with self .assertRaises (OSError ):
2677
+ f .bind ((socket .BDADDR_ANY , 0 , 0 , socket .BDADDR_BREDR , 0 ))
2678
+ with self .assertRaises (OSError ):
2679
+ f .bind ((socket .BDADDR_ANY ,))
2680
+ with self .assertRaises (OSError ):
2681
+ f .bind (socket .BDADDR_ANY )
2682
+ with self .assertRaises (OSError ):
2683
+ f .bind ((socket .BDADDR_ANY .encode (), 0x1001 ))
2684
+
2685
+ @unittest .skipIf (sys .platform == "win32" , "test does not work on windows" )
2673
2686
def testBindRfcommSocket (self ):
2674
2687
with socket .socket (socket .AF_BLUETOOTH , socket .SOCK_STREAM , socket .BTPROTO_RFCOMM ) as s :
2675
2688
channel = 0
2676
2689
s .bind ((socket .BDADDR_ANY , channel ))
2677
2690
addr = s .getsockname ()
2678
2691
self .assertEqual (addr , (socket .BDADDR_ANY , channel ))
2679
2692
2693
+ def testBadRfcommAddr (self ):
2694
+ with socket .socket (socket .AF_BLUETOOTH , socket .SOCK_STREAM , socket .BTPROTO_RFCOMM ) as s :
2695
+ channel = 0
2696
+ with self .assertRaises (OSError ):
2697
+ s .bind ((socket .BDADDR_ANY .encode (), channel ))
2698
+ with self .assertRaises (OSError ):
2699
+ s .bind ((socket .BDADDR_ANY ,))
2700
+ with self .assertRaises (OSError ):
2701
+ s .bind ((socket .BDADDR_ANY , channel , 0 ))
2702
+ with self .assertRaises (OSError ):
2703
+ s .bind ((socket .BDADDR_ANY + '\0 ' , channel ))
2704
+ with self .assertRaises (OSError ):
2705
+ s .bind (('invalid' , channel ))
2706
+
2680
2707
@unittest .skipUnless (hasattr (socket , 'BTPROTO_HCI' ), 'Bluetooth HCI sockets required for this test' )
2681
2708
def testBindHciSocket (self ):
2682
2709
with socket .socket (socket .AF_BLUETOOTH , socket .SOCK_RAW , socket .BTPROTO_HCI ) as s :
@@ -2690,13 +2717,49 @@ def testBindHciSocket(self):
2690
2717
addr = s .getsockname ()
2691
2718
self .assertEqual (addr , dev )
2692
2719
2720
+ @unittest .skipUnless (hasattr (socket , 'BTPROTO_HCI' ), 'Bluetooth HCI sockets required for this test' )
2721
+ def testBadHciAddr (self ):
2722
+ with socket .socket (socket .AF_BLUETOOTH , socket .SOCK_RAW , socket .BTPROTO_HCI ) as s :
2723
+ if sys .platform .startswith (('netbsd' , 'dragonfly' , 'freebsd' )):
2724
+ with self .assertRaises (OSError ):
2725
+ s .bind (socket .BDADDR_ANY )
2726
+ with self .assertRaises (OSError ):
2727
+ s .bind ((socket .BDADDR_ANY .encode (),))
2728
+ if sys .platform .startswith ('freebsd' ):
2729
+ with self .assertRaises (ValueError ):
2730
+ s .bind (socket .BDADDR_ANY .encode () + b'\0 ' )
2731
+ with self .assertRaises (ValueError ):
2732
+ s .bind (socket .BDADDR_ANY .encode () + b' ' * 100 )
2733
+ with self .assertRaises (OSError ):
2734
+ s .bind (b'invalid' )
2735
+ else :
2736
+ dev = 0
2737
+ with self .assertRaises (OSError ):
2738
+ s .bind (())
2739
+ with self .assertRaises (OSError ):
2740
+ s .bind ((dev , 0 ))
2741
+ with self .assertRaises (OSError ):
2742
+ s .bind (dev )
2743
+ with self .assertRaises (OSError ):
2744
+ s .bind (socket .BDADDR_ANY .encode ())
2745
+
2693
2746
@unittest .skipUnless (hasattr (socket , 'BTPROTO_SCO' ), 'Bluetooth SCO sockets required for this test' )
2694
2747
def testBindScoSocket (self ):
2695
2748
with socket .socket (socket .AF_BLUETOOTH , socket .SOCK_SEQPACKET , socket .BTPROTO_SCO ) as s :
2696
2749
s .bind (socket .BDADDR_ANY .encode ())
2697
2750
addr = s .getsockname ()
2698
2751
self .assertEqual (addr , socket .BDADDR_ANY )
2699
2752
2753
+ @unittest .skipUnless (hasattr (socket , 'BTPROTO_SCO' ), 'Bluetooth SCO sockets required for this test' )
2754
+ def testBadScoAddr (self ):
2755
+ with socket .socket (socket .AF_BLUETOOTH , socket .SOCK_SEQPACKET , socket .BTPROTO_SCO ) as s :
2756
+ with self .assertRaises (OSError ):
2757
+ s .bind (socket .BDADDR_ANY )
2758
+ with self .assertRaises (OSError ):
2759
+ s .bind ((socket .BDADDR_ANY .encode (),))
2760
+ with self .assertRaises (OSError ):
2761
+ s .bind (b'invalid' )
2762
+
2700
2763
2701
2764
@unittest .skipUnless (HAVE_SOCKET_HYPERV ,
2702
2765
'Hyper-V sockets required for this test.' )
0 commit comments