Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
log: fix memory leak in open_next_file()
author
Nguyễn Thái Ngọc Duy
<pclouds@gmail.com>
Wed, 3 May 2017 10:16:56 +0000
(17:16 +0700)
committer
Junio C Hamano
<gitster@pobox.com>
Fri, 26 May 2017 03:33:56 +0000
(12:33 +0900)
Noticed-by: Jeff King <peff@peff.net>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/log.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
f7566f0
)
diff --git
a/builtin/log.c
b/builtin/log.c
index 26d6a3cf1415c632da6d416777302534c5c63ac3..f075838df9cb23fd7fc2babed49ef3726896d1bd 100644
(file)
--- a/
builtin/log.c
+++ b/
builtin/log.c
@@
-842,8
+842,10
@@
static int open_next_file(struct commit *commit, const char *subject,
if (output_directory) {
strbuf_addstr(&filename, output_directory);
if (filename.len >=
if (output_directory) {
strbuf_addstr(&filename, output_directory);
if (filename.len >=
- PATH_MAX - FORMAT_PATCH_NAME_MAX - suffix_len)
+ PATH_MAX - FORMAT_PATCH_NAME_MAX - suffix_len) {
+ strbuf_release(&filename);
return error(_("name of output directory is too long"));
return error(_("name of output directory is too long"));
+ }
strbuf_complete(&filename, '/');
}
strbuf_complete(&filename, '/');
}
@@
-857,9
+859,11
@@
static int open_next_file(struct commit *commit, const char *subject,
if (!quiet)
printf("%s\n", filename.buf + outdir_offset);
if (!quiet)
printf("%s\n", filename.buf + outdir_offset);
- if ((rev->diffopt.file = fopen(filename.buf, "w")) == NULL)
- return error_errno(_("Cannot open patch file %s"),
- filename.buf);
+ if ((rev->diffopt.file = fopen(filename.buf, "w")) == NULL) {
+ error_errno(_("Cannot open patch file %s"), filename.buf);
+ strbuf_release(&filename);
+ return -1;
+ }
strbuf_release(&filename);
return 0;
strbuf_release(&filename);
return 0;