diff options
author | Michael Olbrich <m.olbrich@pengutronix.de> | 2019-09-22 17:01:18 +0200 |
---|---|---|
committer | Michael Olbrich <m.olbrich@pengutronix.de> | 2019-09-22 17:28:12 +0200 |
commit | eb6b3771eb47bfa1fa02c0c45523af9b1061125b (patch) | |
tree | 1f41f9f446924debdbb1fd4bd36c2d4fe893148c | |
parent | 4fcd0bfd141f0f371cf5a1c4ab580234e6bd6ba7 (diff) | |
download | genimage-eb6b3771eb47bfa1fa02c0c45523af9b1061125b.tar.gz genimage-eb6b3771eb47bfa1fa02c0c45523af9b1061125b.tar.xz |
map_file_extents: avoid theoretical race condition
The second FS_IOC_FIEMAP call might result in a different number for
fm_mapped_extents if the file changed. So just use the size we allocated.
Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
-rw-r--r-- | util.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -363,8 +363,8 @@ static int map_file_extents(struct image *image, const char *filename, int f, goto err_out; /* Build extent array */ - *extent_count = fiemap->fm_mapped_extents; - *extents = xzalloc(fiemap->fm_mapped_extents * sizeof(struct extent)); + *extent_count = fiemap->fm_extent_count; + *extents = xzalloc(*extent_count * sizeof(struct extent)); for (i = 0; i < fiemap->fm_mapped_extents; i++) { (*extents)[i].start = fiemap->fm_extents[i].fe_logical; (*extents)[i].end = fiemap->fm_extents[i].fe_logical + fiemap->fm_extents[i].fe_length; |