8000 http: Initialize ‘on_status’ when using the http-parser backend. · libgit2/libgit2@65a7ff0 · GitHub
[go: up one dir, main page]

Skip to content

Commit 65a7ff0

Browse files
civodulethomson
authored andcommitted
http: Initialize ‘on_status’ when using the http-parser backend.
Fixes a bug likely introduced in d396819 (in 1.8.1) whereby ‘proxy_settings.on_status’ would be left uninitialized when using the ‘http-parser’ backend, eventually leading to a segfault in ‘http_parser_execute’. Valgrind would report use of the uninitialized value like so: Conditional jump or move depends on uninitialised value(s) at 0x50CD533: http_parser_execute (http_parser.c:910) by 0x4928504: git_http_parser_execute (httpparser.c:82) by 0x4925C42: client_read_and_parse (httpclient.c:1178) by 0x4926F27: git_http_client_read_response (httpclient.c:1458) by 0x49255FE: http_stream_read (http.c:427) by 0x4929B90: git_smart__recv (smart.c:29) by 0x492C147: git_smart__store_refs (smart_protocol.c:58) by 0x4929F6C: git_smart__connect (smart.c:171) by 0x4904DCE: git_remote_connect_ext (remote.c:963) by 0x48A15D2: clone_into (clone.c:449) by 0x48A15D2: git__clone (clone.c:546) by 0x4010E9: main (libgit2-proxy.c:20)
1 parent 6c5520f commit 65a7ff0

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

src/libgit2/transports/httpparser.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,13 +71,16 @@ size_t git_http_parser_execute(
7171
{
7272
struct http_parser_settings settings_proxy;
7373

74+
settings_proxy.on_status = NULL;
7475
settings_proxy.on_message_begin = parser->settings.on_message_begin ? on_message_begin : NULL;
7576
settings_proxy.on_url = parser->settings.on_url ? on_url : NULL;
7677
settings_proxy.on_header_field = parser->settings.on_header_field ? on_header_field : NULL;
7778
settings_proxy.on_header_value = parser->settings.on_header_value ? on_header_value : NULL;
7879
settings_proxy.on_headers_complete = parser->settings.on_headers_complete ? on_headers_complete : NULL;
7980
settings_proxy.on_body = parser->settings.on_body ? on_body : NULL;
8081
settings_proxy.on_message_complete = parser->settings.on_message_complete ? on_message_complete : NULL;
82+
settings_proxy.on_chunk_header = NULL;
83+
settings_proxy.on_chunk_complete = NULL;
8184

8285
return http_parser_execute(&parser->parser, &settings_proxy, data, len);
8386
}

0 commit comments

Comments
 (0)
0