Fix bldr msg file open mode when offset specified

It was pointed out to me by gmrt that O_APPEND is incorrect, as lseek
before writing would be undone (perhaps we avoided this issue due to
an inability to write beyond the end of a partition) and O_RDWR is not
necessary to lseek. When AOSP switched from fopen to open, they also
removed the full partition wipe (fopen in wb mode) before each write,
so this is no longer an issue. Completely restore the original AOSP
file access mode flags.

Change-Id: I42b4efc5f499360ce5b761d3a2a5d4dac4cdfb65
This commit is contained in:
Matt Mower
2017-02-16 05:19:59 +01:00
committed by Dees Troy
parent d1d3cb6ef0
commit 6244806a62
+1 -4
View File
@@ -159,10 +159,7 @@ static bool write_misc_partition(const void* p, size_t size, size_t offset, std:
*err = "no misc device set";
return false;
}
int open_flags = O_WRONLY | O_SYNC;
if (offset > 0)
open_flags = O_RDWR | O_APPEND | O_SYNC;
int fd = (open(misc_blk_device.c_str(), open_flags));
int fd = (open(misc_blk_device.c_str(), O_WRONLY | O_SYNC));
if (fd == -1) {
*err = "failed to open " + misc_blk_device + ": ";
*err += strerror(errno);