summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Cantrell <dcantrell@redhat.com>2010-05-25 04:36:00 -1000
committerDavid Cantrell <dcantrell@redhat.com>2010-05-25 09:05:40 -1000
commit2ebe486413f16e7850a4a5551416aca48edc0ca2 (patch)
treeec8110ad2c92940bb4454cb6d6f9d0993f8ed327
parent43f1591f52bcf01571593b38a0bc1ff785d922c8 (diff)
downloadanaconda-2ebe486413f16e7850a4a5551416aca48edc0ca2.tar.gz
anaconda-2ebe486413f16e7850a4a5551416aca48edc0ca2.tar.xz
anaconda-2ebe486413f16e7850a4a5551416aca48edc0ca2.zip
Correct problem with initrd.addrsize generation (#546422)
The last write() line was writing out the addr value again instead of size. Also include libgen.h for basename() call and lose the char * we never use from the strtoul() call.
-rw-r--r--utils/addrsize.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/utils/addrsize.c b/utils/addrsize.c
index 5933a0036..be3bd97f8 100644
--- a/utils/addrsize.c
+++ b/utils/addrsize.c
@@ -32,6 +32,7 @@
#include <unistd.h>
#include <errno.h>
#include <string.h>
+#include <libgen.h>
int main(int argc,char **argv) {
char *cmd = basename(argv[0]);
@@ -39,7 +40,6 @@ int main(int argc,char **argv) {
struct stat initrd_stat;
unsigned int addr = 0, size = 0, zero = 0;
int fd, rc;
- char *tmp = NULL;
mode_t mode = S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH;
if (argc != 4) {
@@ -59,7 +59,7 @@ int main(int argc,char **argv) {
return 2;
}
- addr = htonl(strtoul(address, &tmp, 0));
+ addr = htonl(strtoul(address, NULL, 0));
size = htonl(initrd_stat.st_size);
fd = open(output, O_CREAT | O_RDWR, mode);
@@ -69,7 +69,7 @@ int main(int argc,char **argv) {
}
if (write(fd, &addr, sizeof(int)) == -1) {
- perror("writing initrd.addr (zero) ");
+ perror("writing initrd.addr (addr) ");
return 4;
}
@@ -78,8 +78,8 @@ int main(int argc,char **argv) {
return 5;
}
- if (write(fd, &addr, sizeof(int)) == -1) {
- perror("writing initrd.addr (zero) ");
+ if (write(fd, &size, sizeof(int)) == -1) {
+ perror("writing initrd.addr (size) ");
return 6;
}