Re: [PATCH v3 07/11] reftable: fix NULL derefs in error paths
On Mon, Dec 13 2021, Han-Wen Nienhuys via GitGitGadget wrote:
Show 36 quoted lines
> From: Han-Wen Nienhuys <hanwen@google.com>
>
> Spotted by Coverity.
>
> Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
> ---
> 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?