diff options
author | David Cantrell <dcantrell@redhat.com> | 2006-06-27 17:13:56 +0000 |
---|---|---|
committer | David Cantrell <dcantrell@redhat.com> | 2006-06-27 17:13:56 +0000 |
commit | ab9999976ab6015ed7d1ada526b1aa6868a34659 (patch) | |
tree | 17adaa51332d454fcb2cd3e09c3cf9c449c21cff /loader2 | |
parent | 98ac162e07712108b59f7432466af6d9b18cc70a (diff) | |
download | anaconda-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.c | 21 |
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: */ |