Skip to content

Commit dc309d6

Browse files
committed
"char *devname" -> "const char *devname" throughout
Calling PyArg_ParseTuple(args, "s", &devname) populates devname with a pointer to the internal storage of an (supposedly) immutable string. Make sure the buffer doesn't get mutated by making these pointers be "const char *", rather than just "char *". Found using cpychecker
1 parent 7ff5e27 commit dc309d6

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

python-ethtool/ethtool.c

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ static PyObject *get_hwaddress(PyObject *self __unused, PyObject *args)
147147
{
148148
struct ifreq ifr;
149149
int fd, err;
150-
char *devname;
150+
const char *devname;
151151
char hwaddr[20];
152152

153153
if (!PyArg_ParseTuple(args, "s", &devname))
@@ -194,7 +194,7 @@ static PyObject *get_ipaddress(PyObject *self __unused, PyObject *args)
194194
{
195195
struct ifreq ifr;
196196
int fd, err;
197-
char *devname;
197+
const char *devname;
198198
char ipaddr[20];
199199

200200
if (!PyArg_ParseTuple(args, "s", &devname))
@@ -346,7 +346,7 @@ static PyObject *get_interfaces_info(PyObject *self __unused, PyObject *args) {
346346
static PyObject *get_flags (PyObject *self __unused, PyObject *args)
347347
{
348348
struct ifreq ifr;
349-
char *devname;
349+
const char *devname;
350350
int fd, err;
351351

352352
if (!PyArg_ParseTuple(args, "s", &devname))
@@ -383,7 +383,7 @@ static PyObject *get_netmask (PyObject *self __unused, PyObject *args)
383383
{
384384
struct ifreq ifr;
385385
int fd, err;
386-
char *devname;
386+
const char *devname;
387387
char netmask[20];
388388

389389
if (!PyArg_ParseTuple(args, "s", &devname))
@@ -427,7 +427,7 @@ static PyObject *get_broadcast(PyObject *self __unused, PyObject *args)
427427
{
428428
struct ifreq ifr;
429429
int fd, err;
430-
char *devname;
430+
const char *devname;
431431
char broadcast[20];
432432

433433
if (!PyArg_ParseTuple(args, "s", &devname))
@@ -473,7 +473,7 @@ static PyObject *get_module(PyObject *self __unused, PyObject *args)
473473
struct ifreq ifr;
474474
int fd, err;
475475
char buf[2048];
476-
char *devname;
476+
const char *devname;
477477

478478
if (!PyArg_ParseTuple(args, "s", &devname))
479479
return NULL;
@@ -546,7 +546,7 @@ static PyObject *get_businfo(PyObject *self __unused, PyObject *args)
546546
struct ifreq ifr;
547547
int fd, err;
548548
char buf[1024];
549-
char *devname;
549+
const char *devname;
550550

551551
if (!PyArg_ParseTuple(args, "s", &devname))
552552
return NULL;
@@ -583,7 +583,7 @@ static PyObject *get_businfo(PyObject *self __unused, PyObject *args)
583583
return PyString_FromString(((struct ethtool_drvinfo *)buf)->bus_info);
584584
}
585585

586-
static int send_command(int cmd, char *devname, void *value)
586+
static int send_command(int cmd, const char *devname, void *value)
587587
{
588588
/* Setup our request structure. */
589589
int fd, err;
@@ -617,7 +617,7 @@ static int send_command(int cmd, char *devname, void *value)
617617

618618
static int get_dev_value(int cmd, PyObject *args, void *value)
619619
{
620-
char *devname;
620+
const char *devname;
621621
int err = -1;
622622

623623
if (PyArg_ParseTuple(args, "s", &devname))
@@ -640,7 +640,7 @@ static int get_dev_int_value(int cmd, PyObject *args, int *value)
640640
static int dev_set_int_value(int cmd, PyObject *args)
641641
{
642642
struct ethtool_value eval;
643-
char *devname;
643+
const char *devname;
644644

645645
if (!PyArg_ParseTuple(args, "si", &devname, &eval.data))
646646
return -1;
@@ -824,7 +824,7 @@ static PyObject *get_coalesce(PyObject *self __unused, PyObject *args)
824824
static PyObject *set_coalesce(PyObject *self __unused, PyObject *args)
825825
{
826826
struct ethtool_coalesce coal;
827-
char *devname;
827+
const char *devname;
828828
PyObject *dict;
829829

830830
if (!PyArg_ParseTuple(args, "sO", &devname, &dict))
@@ -864,7 +864,7 @@ static PyObject *get_ringparam(PyObject *self __unused, PyObject *args)
864864
static PyObject *set_ringparam(PyObject *self __unused, PyObject *args)
865865
{
866866
struct ethtool_ringparam ring;
867-
char *devname;
867+
const char *devname;
868868
PyObject *dict;
869869

870870
if (!PyArg_ParseTuple(args, "sO", &devname, &dict))

0 commit comments

Comments
 (0)