Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 48c9f619 authored by Robin Hsu's avatar Robin Hsu
Browse files

libsparse: fix memory leak in output_file_close()



Fix memory leak in output_file_close():
Arguable whose resposibility to free structs allocated inside a file
struct (the caller or the library function), but the following protocol
(i.e. this fix) would better prevent memory leaks:
1) output_file_close() function will free those structs inside a file struct,
   right before closing the file.
   * Note: those structs are originally allocated by other libsparse function.
2) If the caller wants to clean up those struct inside a file struct,
   it may.  Just free those structs, and set the pointer to NULL.
   Afterward, when file_close()'s are called, they won't be free'ed twice.

Bug: 142483439
Test: verified by script MemLeak_LastCmd.sh (attached in Bugnizer)
Change-Id: I8bb9f7c9f7d19268663e2830d1a90d27bd5f99bd
Signed-off-by: default avatarRobin Hsu <robinhsu@google.com>
parent d9381651
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -493,6 +493,10 @@ static struct sparse_file_ops normal_file_ops = {

void output_file_close(struct output_file* out) {
  out->sparse_ops->write_end_chunk(out);
  free(out->zero_buf);
  free(out->fill_buf);
  out->zero_buf = nullptr;
  out->fill_buf = nullptr;
  out->ops->close(out);
}