list-objects-filter-options: do not over-strbuf_init
authorMatthew DeVore <matvore@google.com>
Fri, 5 Oct 2018 21:31:26 +0000 (14:31 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sat, 6 Oct 2018 23:55:00 +0000 (08:55 +0900)
The function gently_parse_list_objects_filter is either called with
errbuf=STRBUF_INIT or errbuf=NULL, but that function calls strbuf_init
when errbuf is not NULL. strbuf_init is only necessary if errbuf
contains garbage, and risks a memory leak if errbuf already has a
non-STRBUF_INIT state. It should be the caller's responsibility to make
sure errbuf is not garbage, since garbage content is easily avoidable
with STRBUF_INIT.

Signed-off-by: Matthew DeVore <matvore@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
list-objects-filter-options.c
index c0e2bd6a06a27b6056364c43b003d74539fd6cad..d259bdb2c1490bf8fe3b36e61a9a982b63ab4f3c 100644 (file)
@@ -30,7 +30,6 @@ static int gently_parse_list_objects_filter(
 
        if (filter_options->choice) {
                if (errbuf) {
-                       strbuf_init(errbuf, 0);
                        strbuf_addstr(
                                errbuf,
                                _("multiple filter-specs cannot be combined"));
@@ -71,10 +70,9 @@ static int gently_parse_list_objects_filter(
                return 0;
        }
 
-       if (errbuf) {
-               strbuf_init(errbuf, 0);
+       if (errbuf)
                strbuf_addf(errbuf, "invalid filter-spec '%s'", arg);
-       }
+
        memset(filter_options, 0, sizeof(*filter_options));
        return 1;
 }