summaryrefslogtreecommitdiffstats
path: root/loader2
diff options
context:
space:
mode:
authorDavid Cantrell <dcantrell@redhat.com>2006-06-27 17:13:56 +0000
committerDavid Cantrell <dcantrell@redhat.com>2006-06-27 17:13:56 +0000
commitab9999976ab6015ed7d1ada526b1aa6868a34659 (patch)
tree17adaa51332d454fcb2cd3e09c3cf9c449c21cff /loader2
parent98ac162e07712108b59f7432466af6d9b18cc70a (diff)
downloadanaconda-ab9999976ab6015ed7d1ada526b1aa6868a34659.tar.gz
anaconda-ab9999976ab6015ed7d1ada526b1aa6868a34659.tar.xz
anaconda-ab9999976ab6015ed7d1ada526b1aa6868a34659.zip
Fix double free() when using a MAC address for ksdevice. Use str2upper()
for ksMacAddr comparison.
Diffstat (limited to 'loader2')
-rw-r--r--loader2/net.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/loader2/net.c b/loader2/net.c
index c0488898b..fb0d1febf 100644
--- a/loader2/net.c
+++ b/loader2/net.c
@@ -19,7 +19,6 @@
*
*/
-#include <ctype.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
@@ -39,6 +38,7 @@
#include "../isys/net.h"
#include "../isys/wireless.h"
#include "../isys/nl.h"
+#include "../isys/str.h"
#include "lang.h"
#include "loader.h"
@@ -1142,7 +1142,7 @@ void setKickstartNetwork(struct loaderData_s * loaderData, int argc,
/* if multiple interfaces get one to use from user. */
/* NOTE - uses kickstart data available in loaderData */
int chooseNetworkInterface(struct loaderData_s * loaderData) {
- int i, j, rc;
+ int i, rc;
unsigned int max = 40;
int deviceNums = 0;
int deviceNum;
@@ -1169,10 +1169,7 @@ int chooseNetworkInterface(struct loaderData_s * loaderData) {
ksMacAddr = strdup(loaderData->netDev);
}
- for (j=0; j<strlen(ksMacAddr); j++) {
- if (ksMacAddr[j] >= 'a' && ksMacAddr[j] <= 'f')
- ksMacAddr[j] = toupper(ksMacAddr[j]);
- }
+ ksMacAddr = str2upper(ksMacAddr);
}
for (i = 0; devs[i]; i++) {
@@ -1198,15 +1195,19 @@ int chooseNetworkInterface(struct loaderData_s * loaderData) {
foundDev = 1;
} else if (ksMacAddr != NULL) {
/* maybe it's a mac address */
- char * devmacaddr;
+ char *devmacaddr = NULL;
devmacaddr = netlink_interfaces_mac2str(devs[i]->device);
if ((devmacaddr != NULL) && !strcmp(ksMacAddr, devmacaddr)) {
foundDev = 1;
free(loaderData->netDev);
loaderData->netDev = devs[i]->device;
+ } else {
+ free(ksMacAddr);
+ }
+
+ if (devmacaddr != NULL) {
+ free(devmacaddr);
}
- free(ksMacAddr);
- free(devmacaddr);
}
}
}
@@ -1330,3 +1331,5 @@ int kickstartNetworkUp(struct loaderData_s * loaderData,
return 0;
}
+
+/* vim:set shiftwidth=4 softtabstop=4: */