firmware-utils: when using open with O_CREAT and O_WRONLY, also use O_TRUNC to ensure that overwritten files have the right size (fixes #3505)

SVN-Revision: 12667
owl
Felix Fietkau 2008-09-23 16:12:40 +00:00
parent c3ae8337f4
commit 216c6cd8a9
3 changed files with 4 additions and 4 deletions

View File

@ -122,7 +122,7 @@ int main(int argc, char **argv)
memcpy(buf, &header, sizeof(header)); memcpy(buf, &header, sizeof(header));
// write the buf // write the buf
if ((fd = open(argv[3], O_CREAT|O_WRONLY,0644)) < 0 if ((fd = open(argv[3], O_CREAT|O_WRONLY|O_TRUNC,0644)) < 0
|| write(fd, buf, buflen) != buflen || write(fd, buf, buflen) != buflen
|| close(fd) < 0) || close(fd) < 0)
{ {

View File

@ -170,7 +170,7 @@ int main(int argc, char **argv)
exit(3); exit(3);
} else { } else {
// all is well, write the file without the prefix // all is well, write the file without the prefix
if ((fd = open(argv[3], O_CREAT|O_WRONLY,0644)) < 0 if ((fd = open(argv[3], O_CREAT|O_WRONLY|O_TRUNC,0644)) < 0
|| write(fd, trx + sizeof(struct motorola), len - sizeof(struct motorola)) != len - sizeof(struct motorola) || write(fd, trx + sizeof(struct motorola), len - sizeof(struct motorola)) != len - sizeof(struct motorola)
|| close(fd) < 0) || close(fd) < 0)
{ {
@ -211,7 +211,7 @@ int main(int argc, char **argv)
firmware->crc = htonl(crc32buf((unsigned char *)&firmware->flags, sizeof(firmware->flags) + len)); firmware->crc = htonl(crc32buf((unsigned char *)&firmware->flags, sizeof(firmware->flags) + len));
// write the firmware // write the firmware
if ((fd = open(argv[3], O_CREAT|O_WRONLY,0644)) < 0 if ((fd = open(argv[3], O_CREAT|O_WRONLY|O_TRUNC,0644)) < 0
|| write(fd, firmware, sizeof(struct motorola) + len) != sizeof(struct motorola) + len || write(fd, firmware, sizeof(struct motorola) + len) != sizeof(struct motorola) + len
|| close(fd) < 0) || close(fd) < 0)
{ {

View File

@ -143,7 +143,7 @@ static int gen_ptable(int nr)
printf("%ld\n", ((long) len * 512)); printf("%ld\n", ((long) len * 512));
} }
if ((fd = open(filename, O_WRONLY|O_CREAT, 0644)) < 0) { if ((fd = open(filename, O_WRONLY|O_CREAT|O_TRUNC, 0644)) < 0) {
fprintf(stderr, "Can't open output file '%s'\n",filename); fprintf(stderr, "Can't open output file '%s'\n",filename);
return -1; return -1;
} }