@@ -94,6 +94,7 @@ static PyObject *get_devices(PyObject *self __unused, PyObject *args __unused)
9494 ret = fgets (buffer , 256 , fd );
9595 ret = fgets (buffer , 256 , fd );
9696 if (!ret ) {
97+ fclose (fd );
9798 return PyErr_SetFromErrno (PyExc_OSError );
9899 }
99100
@@ -665,7 +666,8 @@ static PyObject *get_wireless_protocol (PyObject *self __unused, PyObject *args)
665666
666667 /* Setup our request structure. */
667668 memset (& iwr , 0 , sizeof (iwr ));
668- strncpy (iwr .ifr_name , devname , IFNAMSIZ );
669+ strncpy (iwr .ifr_name , devname , IFNAMSIZ - 1 );
670+ iwr .ifr_name [IFNAMSIZ - 1 ] = 0 ;
669671
670672 /* Open control socket. */
671673 fd = socket (AF_INET , SOCK_DGRAM , 0 );
@@ -728,7 +730,7 @@ static PyObject *__struct_desc_create_dict(struct struct_desc *table,
728730 PyObject * dict = PyDict_New ();
729731
730732 if (dict == NULL )
731- goto out ;
733+ return NULL ;
732734
733735 for (i = 0 ; i < nr_entries ; ++ i ) {
734736 struct struct_desc * d = & table [i ];
@@ -741,21 +743,21 @@ static PyObject *__struct_desc_create_dict(struct struct_desc *table,
741743 break ;
742744 }
743745
744- if (objval == NULL )
745- goto free_dict ;
746+ if (objval == NULL ) {
747+ Py_DECREF (dict );
748+ return NULL ;
749+ }
746750
747751 if (PyDict_SetItemString (dict , d -> name , objval ) != 0 ) {
748752 Py_DECREF (objval );
749- goto free_dict ;
753+ Py_DECREF (dict );
754+ return NULL ;
750755 }
751756
752757 Py_DECREF (objval );
753758 }
754- out :
759+
755760 return dict ;
756- free_dict :
757- goto out ;
758- dict = NULL ;
759761}
760762
761763#define struct_desc_create_dict (table , values ) \
0 commit comments