open_istream(): do not dereference NULL in the error case
authorJunio C Hamano <gitster@pobox.com>
Wed, 19 Feb 2014 00:00:53 +0000 (16:00 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 19 Feb 2014 00:00:53 +0000 (16:00 -0800)
When stream-filter cannot be attached, it is expected to return NULL,
and we should close the stream we opened and signal an error by
returning NULL ourselves from this function.

However, we attempted to dereference that NULL pointer between the
point we detected the error and returned from the function.

Brought-to-attention-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
streaming.c
index d7c9f32f0ce98112ddd4d4a8499b227b181e09e6..2ff036a0fa6c8e7b013d061d16baf33045305950 100644 (file)
@@ -152,8 +152,10 @@ struct git_istream *open_istream(const unsigned char *sha1,
        if (filter) {
                /* Add "&& !is_null_stream_filter(filter)" for performance */
                struct git_istream *nst = attach_stream_filter(st, filter);
-               if (!nst)
+               if (!nst) {
                        close_istream(st);
+                       return NULL;
+               }
                st = nst;
        }