lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1460062720-21736-4-git-send-email-acme@kernel.org>
Date:	Thu,  7 Apr 2016 17:58:24 -0300
From:	Arnaldo Carvalho de Melo <acme@...nel.org>
To:	Ingo Molnar <mingo@...nel.org>
Cc:	linux-kernel@...r.kernel.org,
	Arnaldo Carvalho de Melo <acme@...hat.com>,
	Adrian Hunter <adrian.hunter@...el.com>,
	David Ahern <dsahern@...il.com>,
	Dima Kogan <dima@...retsauce.net>,
	Frederic Weisbecker <fweisbec@...il.com>,
	Jiri Olsa <jolsa@...nel.org>, Namhyung Kim <namhyung@...il.com>
Subject: [PATCH 03/19] perf script perl: Do error checking on new backtrace routine

From: Arnaldo Carvalho de Melo <acme@...hat.com>

This ended up triggering these warnings when building on Ubuntu 12.04.5:

  util/scripting-engines/trace-event-perl.c: In function 'perl_process_callchain':
  util/scripting-engines/trace-event-perl.c:293:4: error: value computed is not used [-Werror=unused-value]
  util/scripting-engines/trace-event-perl.c:294:4: error: value computed is not used [-Werror=unused-value]
  util/scripting-engines/trace-event-perl.c:295:4: error: value computed is not used [-Werror=unused-value]
  util/scripting-engines/trace-event-perl.c:297:4: error: value computed is not used [-Werror=unused-value]
  util/scripting-engines/trace-event-perl.c:309:4: error: value computed is not used [-Werror=unused-value]
  cc1: all warnings being treated as errors
  mv: cannot stat `/tmp/build/perf/util/scripting-engines/.trace-event-perl.o.tmp': No such file or directory
  make[4]: *** [/tmp/build/perf/util/scripting-engines/trace-event-perl.o] Error 1

Fix it by doing error checking when building the perl data structures
related to callchains.

Cc: Adrian Hunter <adrian.hunter@...el.com>
Cc: David Ahern <dsahern@...il.com>
Cc: Dima Kogan <dima@...retsauce.net>
Cc: Frederic Weisbecker <fweisbec@...il.com>
Cc: Jiri Olsa <jolsa@...nel.org>
Cc: Namhyung Kim <namhyung@...il.com>
Fixes: f7380c12ec6c ("perf script perl: Perl scripts now get a backtrace, like the python ones")
Signed-off-by: Arnaldo Carvalho de Melo <acme@...hat.com>
---
 .../perf/util/scripting-engines/trace-event-perl.c | 30 +++++++++++++++-------
 1 file changed, 21 insertions(+), 9 deletions(-)

diff --git a/tools/perf/util/scripting-engines/trace-event-perl.c b/tools/perf/util/scripting-engines/trace-event-perl.c
index 1d160855cda9..35ed00a600fb 100644
--- a/tools/perf/util/scripting-engines/trace-event-perl.c
+++ b/tools/perf/util/scripting-engines/trace-event-perl.c
@@ -283,18 +283,27 @@ static SV *perl_process_callchain(struct perf_sample *sample,
 		if (!elem)
 			goto exit;
 
-		hv_stores(elem, "ip", newSVuv(node->ip));
+		if (!hv_stores(elem, "ip", newSVuv(node->ip))) {
+			hv_undef(elem);
+			goto exit;
+		}
 
 		if (node->sym) {
 			HV *sym = newHV();
-			if (!sym)
+			if (!sym) {
+				hv_undef(elem);
+				goto exit;
+			}
+			if (!hv_stores(sym, "start",   newSVuv(node->sym->start)) ||
+			    !hv_stores(sym, "end",     newSVuv(node->sym->end)) ||
+			    !hv_stores(sym, "binding", newSVuv(node->sym->binding)) ||
+			    !hv_stores(sym, "name",    newSVpvn(node->sym->name,
+								node->sym->namelen)) ||
+			    !hv_stores(elem, "sym",    newRV_noinc((SV*)sym))) {
+				hv_undef(sym);
+				hv_undef(elem);
 				goto exit;
-			hv_stores(sym, "start",   newSVuv(node->sym->start));
-			hv_stores(sym, "end",     newSVuv(node->sym->end));
-			hv_stores(sym, "binding", newSVuv(node->sym->binding));
-			hv_stores(sym, "name",    newSVpvn(node->sym->name,
-							   node->sym->namelen));
-			hv_stores(elem, "sym",    newRV_noinc((SV*)sym));
+			}
 		}
 
 		if (node->map) {
@@ -306,7 +315,10 @@ static SV *perl_process_callchain(struct perf_sample *sample,
 				else if (map->dso->name)
 					dsoname = map->dso->name;
 			}
-			hv_stores(elem, "dso", newSVpv(dsoname,0));
+			if (!hv_stores(elem, "dso", newSVpv(dsoname,0))) {
+				hv_undef(elem);
+				goto exit;
+			}
 		}
 
 		callchain_cursor_advance(&callchain_cursor);
-- 
2.5.5

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ