@@ -2044,10 +2044,10 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
20442044 struct sockaddr_l2 * addr = & addrbuf -> bt_l2 ;
20452045 memset (addr , 0 , sizeof (struct sockaddr_l2 ));
20462046 _BT_L2_MEMB (addr , family ) = AF_BLUETOOTH ;
2047- int psm ;
2048- int cid = 0 ;
2047+ unsigned short psm ;
2048+ unsigned short cid = 0 ;
20492049 unsigned char bdaddr_type = BDADDR_BREDR ;
2050- if (!PyArg_ParseTuple (args , "si|iB " , & straddr ,
2050+ if (!PyArg_ParseTuple (args , "sH|HB " , & straddr ,
20512051 & psm ,
20522052 & cid ,
20532053 & bdaddr_type )) {
@@ -2071,12 +2071,15 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
20712071 const char * straddr ;
20722072 struct sockaddr_rc * addr = & addrbuf -> bt_rc ;
20732073 _BT_RC_MEMB (addr , family ) = AF_BLUETOOTH ;
2074- if (!PyArg_ParseTuple (args , "si" , & straddr ,
2075- & _BT_RC_MEMB (addr , channel ))) {
2074+ uint8_t channel = _BT_RC_MEMB (addr , channel );
2075+ if (!PyArg_ParseTuple (args , "sB" , & straddr ,
2076+ & channel )) {
20762077 PyErr_Format (PyExc_OSError ,
20772078 "%s(): wrong format" , caller );
20782079 return 0 ;
20792080 }
2081+ _BT_RC_MEMB (addr , channel ) = channel ;
2082+
20802083 if (setbdaddr (straddr , & _BT_RC_MEMB (addr , bdaddr )) < 0 )
20812084 return 0 ;
20822085
@@ -2100,11 +2103,13 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
21002103 return 0 ;
21012104#else /* __NetBSD__ || __DragonFly__ */
21022105 _BT_HCI_MEMB (addr , family ) = AF_BLUETOOTH ;
2103- if (!PyArg_ParseTuple (args , "i" , & _BT_HCI_MEMB (addr , dev ))) {
2106+ unsigned short dev = _BT_HCI_MEMB (addr , dev );
2107+ if (!PyArg_ParseTuple (args , "H" , & dev )) {
21042108 PyErr_Format (PyExc_OSError ,
21052109 "%s(): wrong format" , caller );
21062110 return 0 ;
21072111 }
2112+ _BT_HCI_MEMB (addr , dev ) = dev ;
21082113#endif /* !(__NetBSD__ || __DragonFly__) */
21092114 * len_ret = sizeof * addr ;
21102115 return 1 ;
0 commit comments