diff options
| author | David Cantrell <dcantrell@redhat.com> | 2008-06-27 03:25:34 -1000 |
|---|---|---|
| committer | David Cantrell <dcantrell@redhat.com> | 2008-06-27 03:25:38 -1000 |
| commit | 83389b2effe828debfbbcbebf87dbfd2cc12e361 (patch) | |
| tree | aeaffe2d818605590ffce1be6e894f861496fdd5 | |
| parent | adfa32b7ae12e10545c927f71655aaef950013a0 (diff) | |
| download | anaconda-83389b2effe828debfbbcbebf87dbfd2cc12e361.tar.gz anaconda-83389b2effe828debfbbcbebf87dbfd2cc12e361.tar.xz anaconda-83389b2effe828debfbbcbebf87dbfd2cc12e361.zip | |
Per strtol(3) man page, set errno=0 before call.
From the NOTES section of strtol(3):
"Since strtol() can legitimately return 0, LONG_MAX, or
LONG_MIN (LLONG_MAX or LLONG_MIN for strtoll()) on both
success and failure, the calling program should set errno
to 0 before the call, and then determine if an error
occurred by checking whether errno has a non-zero value
after the call."
| -rw-r--r-- | isys/devices.c | 3 | ||||
| -rw-r--r-- | isys/isys.c | 7 | ||||
| -rw-r--r-- | isys/silo.c | 4 | ||||
| -rw-r--r-- | loader2/fwloader.c | 1 | ||||
| -rw-r--r-- | loader2/loader.c | 6 | ||||
| -rw-r--r-- | loader2/net.c | 5 | ||||
| -rw-r--r-- | loader2/urls.c | 1 |
7 files changed, 24 insertions, 3 deletions
diff --git a/isys/devices.c b/isys/devices.c index 06dcd8ec7..2e3760ecc 100644 --- a/isys/devices.c +++ b/isys/devices.c @@ -75,6 +75,7 @@ struct device **getDevices(enum deviceType type) { } close(fd); + errno = 0; caps = strtol(buf, NULL, 16); if ((errno == ERANGE && (caps == LONG_MIN || caps == LONG_MAX)) || @@ -103,6 +104,7 @@ struct device **getDevices(enum deviceType type) { } close(fd); + errno = 0; size = strtol(buf, NULL, 10); if ((errno == ERANGE && (size == LONG_MIN || @@ -154,6 +156,7 @@ storagedone: } close(fd); + errno = 0; type = strtol(buf, NULL, 10); if ((errno == ERANGE && (type == LONG_MIN || type == LONG_MAX)) || diff --git a/isys/isys.c b/isys/isys.c index e2b40cb87..31786df1e 100644 --- a/isys/isys.c +++ b/isys/isys.c @@ -547,7 +547,8 @@ static PyObject * doConfigNetDevice(PyObject * s, PyObject * args) { if (inet_pton(AF_INET6, ipv6, &addr6) >= 1) { cfg.ipv6 = ip_addr_in6(&addr6); - if (strlen(prefix)) + if (strlen(prefix)) { + errno = 0; i = strtol(prefix, NULL, 10); if ((errno == ERANGE && (i == LONG_MIN || i == LONG_MAX)) || @@ -555,8 +556,10 @@ static PyObject * doConfigNetDevice(PyObject * s, PyObject * args) { return NULL; } - if (i > 0 && i <= 128) + if (i > 0 && i <= 128) { cfg.ipv6_prefixlen = i; + } + } } /* Global */ diff --git a/isys/silo.c b/isys/silo.c index c0eabdbc5..a790efa51 100644 --- a/isys/silo.c +++ b/isys/silo.c @@ -479,7 +479,8 @@ scan_scsi(void) { while ((enthba = readdir(dirhba))) { if (enthba->d_name[0] == '.') - continue; + continue; + errno = 0; host = strtol(enthba->d_name, NULL, 10); if ((errno == ERANGE && (host == LONG_MIN || host == LONG_MAX)) || @@ -807,6 +808,7 @@ disk2PromPath (PyObject *self, PyObject *args) else if (!disk[0]) part = 3; else { + errno = 0; part = strtol (disk, NULL, 10); if ((errno == ERANGE && (part == LONG_MIN || part == LONG_MAX)) || diff --git a/loader2/fwloader.c b/loader2/fwloader.c index 114ffa485..2c0412e5c 100644 --- a/loader2/fwloader.c +++ b/loader2/fwloader.c @@ -471,6 +471,7 @@ static void load_firmware(struct fw_loader *fwl, struct uevent *uevent) return; } + errno = 0; timeout_secs = strtol(timeout, NULL, 10); if ((errno == ERANGE && (timeout_secs == LONG_MIN || diff --git a/loader2/loader.c b/loader2/loader.c index 07dae795b..6edcd36fc 100644 --- a/loader2/loader.c +++ b/loader2/loader.c @@ -644,6 +644,7 @@ static void readNetInfo(struct loaderData_s ** ld) { loaderData->dns = strdup(vparm); if (!strncmp(vname, "MTU", 3)) { + errno = 0; loaderData->mtu = strtol(vparm, NULL, 10); if ((errno == ERANGE && (loaderData->mtu == LONG_MIN || @@ -949,6 +950,7 @@ static void parseCmdLineFlags(struct loaderData_s * loaderData, else if (!strncasecmp(argv[i], "essid=", 6)) loaderData->essid = strdup(argv[i] + 6); else if (!strncasecmp(argv[i], "mtu=", 4)) { + errno = 0; loaderData->mtu = strtol(argv[i] + 4, NULL, 10); if ((errno == ERANGE && (loaderData->mtu == LONG_MIN || @@ -962,6 +964,7 @@ static void parseCmdLineFlags(struct loaderData_s * loaderData, else if (!strncasecmp(argv[i], "wepkey=", 7)) loaderData->wepkey = strdup(argv[i] + 7); else if (!strncasecmp(argv[i], "linksleep=", 10)) { + errno = 0; num_link_checks = strtol(argv[i] + 10, NULL, 10); if ((errno == ERANGE && (num_link_checks == LONG_MIN || @@ -973,6 +976,7 @@ static void parseCmdLineFlags(struct loaderData_s * loaderData, } } else if (!strncasecmp(argv[i], "nicdelay=", 9)) { + errno = 0; post_link_sleep = strtol(argv[i] + 9, NULL, 10); if ((errno == ERANGE && (post_link_sleep == LONG_MIN || @@ -984,6 +988,7 @@ static void parseCmdLineFlags(struct loaderData_s * loaderData, } } else if (!strncasecmp(argv[i], "dhcptimeout=", 12)) { + errno = 0; loaderData->dhcpTimeout = strtol(argv[i] + 12, NULL, 10); if ((errno == ERANGE && (loaderData->dhcpTimeout == LONG_MIN || @@ -2072,6 +2077,7 @@ int main(int argc, char ** argv) { char *ret; ret = fgets(buf, 256, f); + errno = 0; pid = strtol(buf, NULL, 10); if ((errno == ERANGE && (pid == LONG_MIN || pid == LONG_MAX)) || diff --git a/loader2/net.c b/loader2/net.c index 8e645525c..e191f990b 100644 --- a/loader2/net.c +++ b/loader2/net.c @@ -73,6 +73,7 @@ static void cidrCallback(newtComponent co, void * dptr) { if (inet_pton(AF_INET, data->cidr4, &addr) >= 1) return; + errno = 0; cidr = strtol(data->cidr4, NULL, 10); if ((errno == ERANGE && (cidr == LONG_MIN || cidr == LONG_MAX)) || (errno != 0 && cidr == 0)) { @@ -87,6 +88,7 @@ static void cidrCallback(newtComponent co, void * dptr) { if (data->cidr6 == NULL && data->ipv6 == NULL) return; + errno = 0; cidr = strtol(data->cidr6, NULL, 10); if ((errno == ERANGE && (cidr == LONG_MIN || cidr == LONG_MAX)) || (errno != 0 && cidr == 0)) { @@ -119,6 +121,7 @@ static void ipCallback(newtComponent co, void * dptr) { if (data->cidr4 == NULL && data->ipv4 != NULL) { buf = strdup(data->ipv4); octet = strtok(buf, "."); + errno = 0; i = strtol(octet, NULL, 10); if ((errno == ERANGE && (i == LONG_MIN || i == LONG_MAX)) || @@ -1163,6 +1166,7 @@ int manualNetConfig(char * device, struct networkDeviceConfig * cfg, newCfg->dev.set |= PUMP_INTFINFO_HAS_NETMASK; have[IPV4]++; } else { + errno = 0; cidr = strtol(ipcomps->cidr4, NULL, 10); if ((errno == ERANGE && (cidr == LONG_MIN || @@ -1196,6 +1200,7 @@ int manualNetConfig(char * device, struct networkDeviceConfig * cfg, } if (ipcomps->cidr6) { + errno = 0; prefix = strtol(ipcomps->cidr6, NULL, 10); if ((errno == ERANGE && (prefix == LONG_MIN || diff --git a/loader2/urls.c b/loader2/urls.c index f95c75dcc..8dd81bc2a 100644 --- a/loader2/urls.c +++ b/loader2/urls.c @@ -180,6 +180,7 @@ int urlinstStartTransfer(struct iurlinfo * ui, char *path, if (portstr == NULL) { port = -1; } else { + errno = 0; port = strtol(portstr, NULL, 10); if ((errno == ERANGE && (port == LONG_MIN || port == LONG_MAX)) || |
