From patchwork Sat Mar 3 03:02:10 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 26166 Received: (qmail 23458 invoked by alias); 3 Mar 2018 03:02:21 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 23447 invoked by uid 89); 3 Mar 2018 03:02:20 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.2 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, SPF_SOFTFAIL autolearn=ham version=3.3.2 spammy=management X-HELO: barracuda.ebox.ca Received: from barracuda.ebox.ca (HELO barracuda.ebox.ca) (96.127.255.19) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 03 Mar 2018 03:02:18 +0000 X-ASG-Debug-ID: 1520046132-0c856e61891ef1d0001-fS2M51 Received: from smtp.ebox.ca (smtp.electronicbox.net [96.127.255.82]) by barracuda.ebox.ca with ESMTP id Ghs6d3BoZYFAadEl (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 02 Mar 2018 22:02:12 -0500 (EST) X-Barracuda-Envelope-From: simon.marchi@polymtl.ca X-Barracuda-RBL-Trusted-Forwarder: 96.127.255.82 Received: from simark.lan (192-222-251-162.qc.cable.ebox.net [192.222.251.162]) by smtp.ebox.ca (Postfix) with ESMTP id CDB4F441D64; Fri, 2 Mar 2018 22:02:11 -0500 (EST) From: Simon Marchi X-Barracuda-Effective-Source-IP: 192-222-251-162.qc.cable.ebox.net[192.222.251.162] X-Barracuda-Apparent-Source-IP: 192.222.251.162 X-Barracuda-RBL-IP: 192.222.251.162 To: gdb-patches@sourceware.org Cc: Simon Marchi Subject: [PATCH] linux_qxfer_libraries_svr4: Use std::string Date: Fri, 2 Mar 2018 22:02:10 -0500 X-ASG-Orig-Subj: [PATCH] linux_qxfer_libraries_svr4: Use std::string Message-Id: <20180303030210.32627-1-simon.marchi@polymtl.ca> X-Barracuda-Connect: smtp.electronicbox.net[96.127.255.82] X-Barracuda-Start-Time: 1520046132 X-Barracuda-Encrypted: DHE-RSA-AES256-SHA X-Barracuda-URL: https://96.127.255.19:443/cgi-mod/mark.cgi X-Barracuda-Scan-Msg-Size: 4062 X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using global scores of TAG_LEVEL=1000.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=8.0 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.48515 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-IsSubscribed: yes Use std::string, removing some manual memory management. gdb/gdbserver/ChangeLog: * linux-low.c (linux_qxfer_libraries_svr4): Use std::string. --- gdb/gdbserver/linux-low.c | 46 ++++++++++++---------------------------------- 1 file changed, 12 insertions(+), 34 deletions(-) diff --git a/gdb/gdbserver/linux-low.c b/gdb/gdbserver/linux-low.c index 00385ce4c9..c8bb1f5785 100644 --- a/gdb/gdbserver/linux-low.c +++ b/gdb/gdbserver/linux-low.c @@ -6988,8 +6988,6 @@ linux_qxfer_libraries_svr4 (const char *annex, unsigned char *readbuf, unsigned const char *writebuf, CORE_ADDR offset, int len) { - char *document; - unsigned document_len; struct process_info_private *const priv = current_process ()->priv; char filename[PATH_MAX]; int pid, is_elf64; @@ -7019,8 +7017,6 @@ linux_qxfer_libraries_svr4 (const char *annex, unsigned char *readbuf, unsigned int machine; int ptr_size; CORE_ADDR lm_addr = 0, lm_prev = 0; - int allocated = 1024; - char *p; CORE_ADDR l_name, l_addr, l_ld, l_next, l_prev; int header_done = 0; @@ -7093,9 +7089,7 @@ linux_qxfer_libraries_svr4 (const char *annex, unsigned char *readbuf, } } - document = (char *) xmalloc (allocated); - strcpy (document, "l_name_offset, @@ -7125,10 +7119,7 @@ linux_qxfer_libraries_svr4 (const char *annex, unsigned char *readbuf, executable does not have PT_DYNAMIC present and this function already exited above due to failed get_r_debug. */ if (lm_prev == 0) - { - sprintf (p, " main-lm=\"0x%lx\"", (unsigned long) lm_addr); - p = p + strlen (p); - } + string_appendf (document, " main-lm=\"0x%lx\"", (unsigned long) lm_addr); else { /* Not checking for error because reading may stop before @@ -7138,31 +7129,19 @@ linux_qxfer_libraries_svr4 (const char *annex, unsigned char *readbuf, libname[sizeof (libname) - 1] = '\0'; if (libname[0] != '\0') { - /* 6x the size for xml_escape_text below. */ - size_t len = 6 * strlen ((char *) libname); - if (!header_done) { /* Terminate `", - name.c_str (), (unsigned long) lm_addr, - (unsigned long) l_addr, (unsigned long) l_ld); + string_appendf (document, + "", + name.c_str (), (unsigned long) lm_addr, + (unsigned long) l_addr, (unsigned long) l_ld); } } @@ -7173,12 +7152,12 @@ linux_qxfer_libraries_svr4 (const char *annex, unsigned char *readbuf, if (!header_done) { /* Empty list; terminate `"); + document += "/>"; } else - strcpy (p, ""); + document += ""; - document_len = strlen (document); + int document_len = document.length (); if (offset < document_len) document_len -= offset; else @@ -7186,8 +7165,7 @@ linux_qxfer_libraries_svr4 (const char *annex, unsigned char *readbuf, if (len > document_len) len = document_len; - memcpy (readbuf, document + offset, len); - xfree (document); + memcpy (readbuf, document.data () + offset, len); return len; }