Re: [PATCH v3 07/11] reftable: fix NULL derefs in error paths
From: Ævar Arnfjörð Bjarmason <hidden>
Date: 2021-12-13 16:25:21
Subsystem:
the rest · Maintainer:
Linus Torvalds
On Mon, Dec 13 2021, Han-Wen Nienhuys via GitGitGadget wrote:
quoted hunk ↗ jump to hunk
From: Han-Wen Nienhuys <redacted> Spotted by Coverity. Signed-off-by: Han-Wen Nienhuys <redacted> --- reftable/reader.c | 3 ++- reftable/stack.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-)diff --git a/reftable/reader.c b/reftable/reader.c index 006709a645a..8d308d858f8 100644 --- a/reftable/reader.c +++ b/reftable/reader.c@@ -796,6 +796,7 @@ int reftable_reader_print_file(const char *tablename) reftable_table_from_reader(&tab, r); err = reftable_table_print(&tab); done: - reftable_reader_free(r); + if (r) + reftable_reader_free(r); return err; }diff --git a/reftable/stack.c b/reftable/stack.c index 10dfd370e8e..eb03b6c74f6 100644 --- a/reftable/stack.c +++ b/reftable/stack.c@@ -707,7 +707,8 @@ done: strbuf_release(&temp_tab_file_name); strbuf_release(&tab_file_name); strbuf_release(&next_name); - reftable_writer_free(wr); + if (wr) + reftable_writer_free(wr); return err; }
I'd think this would be better:
diff --git a/reftable/reader.c b/reftable/reader.c
index 006709a645a..3eec915830d 100644
--- a/reftable/reader.c
+++ b/reftable/reader.c@@ -641,7 +641,8 @@ int reftable_new_reader(struct reftable_reader **p, void reftable_reader_free(struct reftable_reader *r) { - reader_close(r); + if (r) + reader_close(r); reftable_free(r); }
No?