Просмотр исходного кода

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
Felix Fietkau 17 лет назад
Родитель
Сommit
216c6cd8a9

+ 1 - 1
tools/firmware-utils/src/add_header.c

@@ -122,7 +122,7 @@ int main(int argc, char **argv)
 	memcpy(buf, &header, sizeof(header));
 
 	// 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
 	|| close(fd) < 0)
 	{

+ 2 - 2
tools/firmware-utils/src/motorola-bin.c

@@ -170,7 +170,7 @@ int main(int argc, char **argv)
 			exit(3);
 		} else {
 			// 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)
 			|| 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));
 
 		// 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
 		|| close(fd) < 0)
 		{

+ 1 - 1
tools/firmware-utils/src/ptgen.c

@@ -143,7 +143,7 @@ static int gen_ptable(int nr)
 		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);
 		return -1;
 	}