diff options
author | Giampaolo Rodola <g.rodola@gmail.com> | 2020-05-16 00:30:23 +0200 |
---|---|---|
committer | Giampaolo Rodola <g.rodola@gmail.com> | 2020-05-16 00:30:23 +0200 |
commit | 9efb453e7163690c82226be3440cd8cb6bdffb5b (patch) | |
tree | 13228fabd611041587a19a39a93da5a8b582d227 | |
parent | c1f70d0a5039d340ccb4d5a66a75dbfcd63bd516 (diff) | |
download | psutil-9efb453e7163690c82226be3440cd8cb6bdffb5b.tar.gz |
add strncpy / PSUTIL_STRNCPY variant which adds null terminator (fix gcc-9 warning)
-rw-r--r-- | psutil/_psutil_aix.c | 2 | ||||
-rw-r--r-- | psutil/_psutil_common.h | 5 | ||||
-rw-r--r-- | psutil/_psutil_linux.c | 2 | ||||
-rw-r--r-- | psutil/_psutil_posix.c | 8 | ||||
-rw-r--r-- | psutil/_psutil_sunos.c | 4 |
5 files changed, 13 insertions, 8 deletions
diff --git a/psutil/_psutil_aix.c b/psutil/_psutil_aix.c index cf79d307..791e831e 100644 --- a/psutil/_psutil_aix.c +++ b/psutil/_psutil_aix.c @@ -679,7 +679,7 @@ psutil_net_if_stats(PyObject* self, PyObject* args) { if (sock == -1) goto error; - strncpy(ifr.ifr_name, nic_name, sizeof(ifr.ifr_name)); + PSUTIL_STRNCPY(ifr.ifr_name, nic_name, sizeof(ifr.ifr_name)); // is up? ret = ioctl(sock, SIOCGIFFLAGS, &ifr); diff --git a/psutil/_psutil_common.h b/psutil/_psutil_common.h index 34c428c0..2408c9f6 100644 --- a/psutil/_psutil_common.h +++ b/psutil/_psutil_common.h @@ -15,6 +15,11 @@ extern int PSUTIL_DEBUG; // a signaler for connections without an actual status static const int PSUTIL_CONN_NONE = 128; +// strncpy() variant which appends a null terminator. +#define PSUTIL_STRNCPY(dst, src, n) \ + strncpy(dst, src, n - 1); \ + dst[n - 1] = '\0' + // ==================================================================== // --- Backward compatibility with missing Python.h APIs // ==================================================================== diff --git a/psutil/_psutil_linux.c b/psutil/_psutil_linux.c index 5f00454b..49e86997 100644 --- a/psutil/_psutil_linux.c +++ b/psutil/_psutil_linux.c @@ -500,7 +500,7 @@ psutil_net_if_duplex_speed(PyObject* self, PyObject* args) { sock = socket(AF_INET, SOCK_DGRAM, 0); if (sock == -1) return PyErr_SetFromOSErrnoWithSyscall("socket()"); - strncpy(ifr.ifr_name, nic_name, sizeof(ifr.ifr_name)); + PSUTIL_STRNCPY(ifr.ifr_name, nic_name, sizeof(ifr.ifr_name)); // duplex and speed memset(ðcmd, 0, sizeof ethcmd); diff --git a/psutil/_psutil_posix.c b/psutil/_psutil_posix.c index 38483b3b..f7f8b92d 100644 --- a/psutil/_psutil_posix.c +++ b/psutil/_psutil_posix.c @@ -356,10 +356,10 @@ psutil_net_if_mtu(PyObject *self, PyObject *args) { goto error; #ifdef PSUTIL_SUNOS10 - strncpy(lifr.lifr_name, nic_name, sizeof(lifr.lifr_name)); + PSUTIL_STRNCPY(lifr.lifr_name, nic_name, sizeof(lifr.lifr_name)); ret = ioctl(sock, SIOCGIFMTU, &lifr); #else - strncpy(ifr.ifr_name, nic_name, sizeof(ifr.ifr_name)); + PSUTIL_STRNCPY(ifr.ifr_name, nic_name, sizeof(ifr.ifr_name)); ret = ioctl(sock, SIOCGIFMTU, &ifr); #endif if (ret == -1) @@ -398,7 +398,7 @@ psutil_net_if_flags(PyObject *self, PyObject *args) { if (sock == -1) goto error; - strncpy(ifr.ifr_name, nic_name, sizeof(ifr.ifr_name)); + PSUTIL_STRNCPY(ifr.ifr_name, nic_name, sizeof(ifr.ifr_name)); ret = ioctl(sock, SIOCGIFFLAGS, &ifr); if (ret == -1) goto error; @@ -578,7 +578,7 @@ psutil_net_if_duplex_speed(PyObject *self, PyObject *args) { sock = socket(AF_INET, SOCK_DGRAM, 0); if (sock == -1) return PyErr_SetFromErrno(PyExc_OSError); - strncpy(ifr.ifr_name, nic_name, sizeof(ifr.ifr_name)); + PSUTIL_STRNCPY(ifr.ifr_name, nic_name, sizeof(ifr.ifr_name)); // speed / duplex memset(&ifmed, 0, sizeof(struct ifmediareq)); diff --git a/psutil/_psutil_sunos.c b/psutil/_psutil_sunos.c index 6548640b..82114c8c 100644 --- a/psutil/_psutil_sunos.c +++ b/psutil/_psutil_sunos.c @@ -1024,7 +1024,7 @@ psutil_net_io_counters(PyObject *self, PyObject *args) { goto next; // check if this is a network interface by sending a ioctl - strncpy(ifr.lifr_name, ksp->ks_name, sizeof(ifr.lifr_name)); + PSUTIL_STRNCPY(ifr.lifr_name, ksp->ks_name, sizeof(ifr.lifr_name)); ret = ioctl(sock, SIOCGLIFFLAGS, &ifr); if (ret == -1) goto next; @@ -1515,7 +1515,7 @@ psutil_net_if_stats(PyObject* self, PyObject* args) { if (strcmp(ksp->ks_class, "net") != 0) continue; - strncpy(ifr.lifr_name, ksp->ks_name, sizeof(ifr.lifr_name)); + PSUTIL_STRNCPY(ifr.lifr_name, ksp->ks_name, sizeof(ifr.lifr_name)); ret = ioctl(sock, SIOCGLIFFLAGS, &ifr); if (ret == -1) continue; // not a network interface |