Re: [PATCH] remote.c: free previous results when looking for a ref match

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 08.10.2016 um 01:58 schrieb Stefan Beller:
Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx>
---
 remote.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/remote.c b/remote.c
index ad6c542..5f9afb4 100644
--- a/remote.c
+++ b/remote.c
@@ -833,6 +833,8 @@ static int match_name_with_pattern(const char *key, const char *name,
 		strbuf_add(&sb, value, vstar - value);
 		strbuf_add(&sb, name + klen, namelen - klen - ksuffixlen);
 		strbuf_addstr(&sb, vstar + 1);
+		if (*result)
+			free(*result);

free(3) can handle NULL pointers; this check is not necessary.

Is it wise to release memory for callers? I'd expect them to be responsible for that. Some of them can pass uninitialized pointers; this is not allowed anymore after the change.

 		*result = strbuf_detach(&sb, NULL);
 	}
 	return ret;
@@ -1262,6 +1264,8 @@ static char *get_ref_match(const struct refspec *rs, int rs_nr, const struct ref
 		 */
 		if (!send_mirror && !starts_with(ref->name, "refs/heads/"))
 			return NULL;
+		if (name)
+			free(name);

Again, this check is not necessary. If I read the code correctly the pointer could be uninitialized at that point, though, causing free(3) to crash.

 		name = xstrdup(ref->name);
 	}
 	if (ret_pat)





[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]