Skip to contentSkip to conversation

Use pclose() instead of fclose() on pipe stream

PATCH Superseded Thomas Jarosch 2 participants 4 messages Dec 25, 2012 – Jan 16, 2013 perf events

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Use pclose() instead of fclose() on pipe stream

cppcheck message:
[tools/perf/util/sort.c:277]: (error) Mismatching allocation and deallocation: fp

Also fix descriptor leak on error

---
 tools/perf/util/sort.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
tools/perf/util/sort.c +2 -1
index cfd1c0f..586d2ea 100644
@@ -274,7 +274,6 @@ static int hist_entry__srcline_snprintf(struct hist_entry *self, char *bf,
 
 	if (getline(&path, &line_len, fp) < 0 || !line_len)
 		goto out_ip;
-	fclose(fp);
 	self->srcline = strdup(path);
 	if (self->srcline == NULL)
 		goto out_ip;
@@ -284,8 +283,10 @@ static int hist_entry__srcline_snprintf(struct hist_entry *self, char *bf,
 		*nl = '\0';
 	path = self->srcline;
 out_path:
+	pclose(fp);
 	return repsep_snprintf(bf, size, "%s", path);
 out_ip:
+	pclose(fp);
 	return repsep_snprintf(bf, size, "%-#*llx", BITS_PER_LONG / 4, self->ip);
 }
 
Signature · 1 line
1.7.11.7
#1 lore raw

Em Tue, Dec 25, 2012 at 05:02:04PM +0100, Thomas Jarosch escreveu:

Quoted 9 lines

cppcheck message:
[tools/perf/util/sort.c:277]: (error) Mismatching allocation and deallocation: fp

Also fix descriptor leak on error

---
 tools/perf/util/sort.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

After applying this:

CC /home/acme/git/build/perf/util/cpumap.o
cc1: warnings being treated as errors
util/sort.c: In function ‘hist_entry__srcline_snprintf’:
util/sort.c:254: error: ‘fp’ may be used uninitialized in this function
make: *** [/home/acme/git/build/perf/util/sort.o] Error 1

- Arnaldo

#2 lore raw

Hi Arnaldo,

Quoted 8 lines · On Friday, 11. January 2013 01:16:03 you wrote:
Quoted 7 lines

Also fix descriptor leak on error

---

 tools/perf/util/sort.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
Quoted 7 lines

After applying this:

CC /home/acme/git/build/perf/util/cpumap.o
cc1: warnings being treated as errors
util/sort.c: In function ‘hist_entry__srcline_snprintf’:
util/sort.c:254: error: ‘fp’ may be used uninitialized in this function
make: *** [/home/acme/git/build/perf/util/sort.o] Error 1

Alright, looks like I've messed up the "early" error path. The "FILE *fp" pointer needs to be initialized to NULL.

Should I send another patch or do you want to fix it on the fly?

What about the other patch
"[perf PATCH] Fix possible (unlikely) buffer overflow"

?

Cheers,
Thomas

#3 lore raw

Em Wed, Jan 16, 2013 at 10:09:48AM +0100, Thomas Jarosch escreveu:

Quoted 5 lines

Alright, looks like I've messed up the "early" error path. The "FILE *fp" pointer needs to be initialized to NULL.

Should I send another patch or do you want to fix it on the fly?

Please send another patch taking this into account.

Quoted 2 lines

What about the other patch
"[perf PATCH] Fix possible (unlikely) buffer overflow"

Its in my perf/core branch at:

git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux

As soon as Ingo restarts processing pull requests I'll push it.

- Arnaldo