diff options
| author | Patrick Steinhardt <ps@pks.im> | 2024-09-26 13:46:00 +0200 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2024-09-27 08:25:34 -0700 |
| commit | 02e36f9ffaf1f2395a19dc10c15423883c7b2817 (patch) | |
| tree | f513bdfe0126c7d131882e3268c13bd7860c138c /builtin/help.c | |
| parent | a2b7f03e65ca8c0a5b6d1cbc42866db3df96aeed (diff) | |
| download | git-02e36f9ffaf1f2395a19dc10c15423883c7b2817.tar.gz | |
builtin/help: fix dangling reference to `html_path`
In `get_html_page_path()` we may end up assigning the return value of
`system_path()` to the global `html_path` variable. But as we also
assign the returned value to `to_free`, we will deallocate its memory
upon returning from the function. Consequently, `html_path` will now
point to deallocated memory.
Fix this issue by instead assigning the value to a separate local
variable.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/help.c')
| -rw-r--r-- | builtin/help.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/builtin/help.c b/builtin/help.c index dc1fbe2b98..282ea5721f 100644 --- a/builtin/help.c +++ b/builtin/help.c @@ -513,23 +513,24 @@ static void show_info_page(const char *page) static void get_html_page_path(struct strbuf *page_path, const char *page) { struct stat st; + const char *path = html_path; char *to_free = NULL; - if (!html_path) - html_path = to_free = system_path(GIT_HTML_PATH); + if (!path) + path = to_free = system_path(GIT_HTML_PATH); /* * Check that the page we're looking for exists. */ - if (!strstr(html_path, "://")) { - if (stat(mkpath("%s/%s.html", html_path, page), &st) + if (!strstr(path, "://")) { + if (stat(mkpath("%s/%s.html", path, page), &st) || !S_ISREG(st.st_mode)) die("'%s/%s.html': documentation file not found.", - html_path, page); + path, page); } strbuf_init(page_path, 0); - strbuf_addf(page_path, "%s/%s.html", html_path, page); + strbuf_addf(page_path, "%s/%s.html", path, page); free(to_free); } |
