[前][次][番号順一覧][スレッド一覧]

ruby-changes:72109

From: xtkoba <ko1@a...>
Date: Thu, 9 Jun 2022 20:43:58 +0900 (JST)
Subject: [ruby-changes:72109] 940c8b093d (master): Skip `NULL` values from `dladdr(3)`

https://git.ruby-lang.org/ruby.git/commit/?id=940c8b093d

From 940c8b093de1d903b67b7d80cc33f698a5debf1c Mon Sep 17 00:00:00 2001
From: xtkoba <69125751+xtkoba@u...>
Date: Fri, 30 Apr 2021 23:03:02 +0900
Subject: Skip `NULL` values from `dladdr(3)`

Fixes [Bug #17810]
---
 addr2line.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/addr2line.c b/addr2line.c
index e102667602..aa0226e341 100644
--- a/addr2line.c
+++ b/addr2line.c
@@ -2329,8 +2329,8 @@ rb_dump_backtrace_with_lines(int num_traces, void **traces) https://github.com/ruby/ruby/blob/trunk/addr2line.c#L2329
 	    /* if the binary is strip-ed, this may effect */
 	    for (p=dladdr_fbases; *p; p++) {
 		if (*p == info.dli_fbase) {
-		    lines[i].path = info.dli_fname;
-		    lines[i].sname = info.dli_sname;
+		    if (info.dli_fname) lines[i].path = info.dli_fname;
+		    if (info.dli_sname) lines[i].sname = info.dli_sname;
 		    goto next_line;
 		}
 	    }
@@ -2340,9 +2340,11 @@ rb_dump_backtrace_with_lines(int num_traces, void **traces) https://github.com/ruby/ruby/blob/trunk/addr2line.c#L2340
 	    obj->base_addr = (uintptr_t)info.dli_fbase;
 	    path = info.dli_fname;
 	    obj->path = path;
-	    lines[i].path = path;
-            lines[i].sname = info.dli_sname;
-            lines[i].saddr = (uintptr_t)info.dli_saddr;
+	    if (path) lines[i].path = path;
+            if (info.dli_sname) {
+                lines[i].sname = info.dli_sname;
+                lines[i].saddr = (uintptr_t)info.dli_saddr;
+            }
 	    strlcpy(binary_filename, path, PATH_MAX);
 	    if (fill_lines(num_traces, traces, 1, &obj, lines, i) == (uintptr_t)-1)
 		break;
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]