Author: Reiner Herrmann <reiner@reiner-h.de>
Description: Fix argument parsing of device names
 PyArg_ParseTuple was called with the format string "s*" to parse the
 passed device name into a C string.
 But according to Python C-API documentation, "s*" is used for parsing data
 into a Py_buffer structure:  https://docs.python.org/2/c-api/arg.html
 To store it into a C string, "s" has to be used.
 (Memory doesn't need to be freed, as it is managed by Python.)
Bug-Debian: https://bugs.debian.org/857346

--- a/python-ethtool/ethtool.c
+++ b/python-ethtool/ethtool.c
@@ -121,7 +121,7 @@
 	const char *devname;
 	char hwaddr[20];
 
-	if (!PyArg_ParseTuple(args, "s*", &devname))
+	if (!PyArg_ParseTuple(args, "s", &devname))
 		return NULL;
 
 	/* Setup our request structure. */
@@ -163,7 +163,7 @@
 	const char *devname;
 	char ipaddr[20];
 
-	if (!PyArg_ParseTuple(args, "s*", &devname))
+	if (!PyArg_ParseTuple(args, "s", &devname))
 		return NULL;
 
 	/* Setup our request structure. */
@@ -295,7 +295,7 @@
 	const char *devname;
 	int fd, err;
 
-	if (!PyArg_ParseTuple(args, "s*", &devname))
+	if (!PyArg_ParseTuple(args, "s", &devname))
 		return NULL;
 
 	/* Setup our request structure. */
@@ -328,7 +328,7 @@
 	const char *devname;
 	char netmask[20];
 
-	if (!PyArg_ParseTuple(args, "s*", &devname))
+	if (!PyArg_ParseTuple(args, "s", &devname))
 		return NULL;
 
 	/* Setup our request structure. */
@@ -368,7 +368,7 @@
 	const char *devname;
 	char broadcast[20];
 
-	if (!PyArg_ParseTuple(args, "s*", &devname))
+	if (!PyArg_ParseTuple(args, "s", &devname))
 		return NULL;
 
 	/* Setup our request structure. */
@@ -409,7 +409,7 @@
 	char buf[2048];
 	const char *devname;
 
-	if (!PyArg_ParseTuple(args, "s*", &devname))
+	if (!PyArg_ParseTuple(args, "s", &devname))
 		return NULL;
 
 	/* Setup our control structures. */
@@ -479,7 +479,7 @@
 	char buf[1024];
 	const char *devname;
 
-	if (!PyArg_ParseTuple(args, "s*", &devname))
+	if (!PyArg_ParseTuple(args, "s", &devname))
 		return NULL;
 
 	/* Setup our control structures. */
@@ -545,7 +545,7 @@
 	const char *devname;
 	int err = -1;
 
-	if (PyArg_ParseTuple(args, "s*", &devname))
+	if (PyArg_ParseTuple(args, "s", &devname))
 		err = send_command(cmd, devname, value);
 
 	return err;
@@ -567,7 +567,7 @@
 	struct ethtool_value eval;
 	const char *devname;
 
-	if (!PyArg_ParseTuple(args, "s*i", &devname, &eval.data))
+	if (!PyArg_ParseTuple(args, "si", &devname, &eval.data))
 		return -1;
 
 	return send_command(cmd, devname, &eval);
@@ -752,7 +752,7 @@
 	const char *devname;
 	PyObject *dict;
 
-	if (!PyArg_ParseTuple(args, "s*O", &devname, &dict))
+	if (!PyArg_ParseTuple(args, "sO", &devname, &dict))
 		return NULL;
 
 	if (struct_desc_from_dict(ethtool_coalesce_desc, &coal, dict) != 0)
@@ -792,7 +792,7 @@
 	const char *devname;
 	PyObject *dict;
 
-	if (!PyArg_ParseTuple(args, "s*O", &devname, &dict))
+	if (!PyArg_ParseTuple(args, "sO", &devname, &dict))
 		return NULL;
 
 	if (struct_desc_from_dict(ethtool_ringparam_desc, &ring, dict) != 0)
