summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Cantrell <dcantrell@redhat.com>2008-06-27 03:25:34 -1000
committerDavid Cantrell <dcantrell@redhat.com>2008-06-27 03:25:38 -1000
commit83389b2effe828debfbbcbebf87dbfd2cc12e361 (patch)
treeaeaffe2d818605590ffce1be6e894f861496fdd5
parentadfa32b7ae12e10545c927f71655aaef950013a0 (diff)
downloadanaconda-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.c3
-rw-r--r--isys/isys.c7
-rw-r--r--isys/silo.c4
-rw-r--r--loader2/fwloader.c1
-rw-r--r--loader2/loader.c6
-rw-r--r--loader2/net.c5
-rw-r--r--loader2/urls.c1
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)) ||