mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-24 02:34:06 +02:00
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)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@12667 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
afb3c4be87
commit
1e232a2ad2
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user