From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18630 invoked by alias); 25 Jan 2014 12:18:56 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 18618 invoked by uid 89); 25 Jan 2014 12:18:55 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.7 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.2 X-HELO: relay1.mentorg.com Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sat, 25 Jan 2014 12:18:54 +0000 Received: from svr-orw-fem-01.mgc.mentorg.com ([147.34.98.93]) by relay1.mentorg.com with esmtp id 1W72CI-00043V-T4 from Yao_Qi@mentor.com for gdb-patches@sourceware.org; Sat, 25 Jan 2014 04:18:50 -0800 Received: from SVR-ORW-FEM-02.mgc.mentorg.com ([147.34.96.206]) by svr-orw-fem-01.mgc.mentorg.com over TLS secured channel with Microsoft SMTPSVC(6.0.3790.4675); Sat, 25 Jan 2014 04:18:50 -0800 Received: from qiyao.dyndns.dyndns.org (147.34.91.1) by svr-orw-fem-02.mgc.mentorg.com (147.34.96.168) with Microsoft SMTP Server id 14.2.247.3; Sat, 25 Jan 2014 04:18:47 -0800 From: Yao Qi To: Subject: [PATCH] Use rs->buf after getpkt Date: Sat, 25 Jan 2014 12:18:00 -0000 Message-ID: <1390652193-6018-1-git-send-email-yao@codesourcery.com> MIME-Version: 1.0 Content-Type: text/plain X-IsSubscribed: yes X-SW-Source: 2014-01/txt/msg00960.txt.bz2 Hi, The following code snippet looks wrong to me char *buf = rs->buf; getpkt (&rs->buf, &rs->buf_size, 0); packet_ok (buf, ); if rs->buf is reallocated in getpkt, buf points to an out of dated memory. This patch removes local 'buf' and uses rs->buf. Regression tested on x86_64-linux. Is it OK? gdb: 2014-01-25 Yao Qi * remote.c (remote_pass_signals): Remove local 'buf' and use rs->buf. (remote_program_signals): Likewise. --- gdb/remote.c | 8 ++------ 1 files changed, 2 insertions(+), 6 deletions(-) diff --git a/gdb/remote.c b/gdb/remote.c index 7297df0..ece05d1 100644 --- a/gdb/remote.c +++ b/gdb/remote.c @@ -1732,11 +1732,9 @@ remote_pass_signals (int numsigs, unsigned char *pass_signals) *p = 0; if (!rs->last_pass_packet || strcmp (rs->last_pass_packet, pass_packet)) { - char *buf = rs->buf; - putpkt (pass_packet); getpkt (&rs->buf, &rs->buf_size, 0); - packet_ok (buf, &remote_protocol_packets[PACKET_QPassSignals]); + packet_ok (rs->buf, &remote_protocol_packets[PACKET_QPassSignals]); if (rs->last_pass_packet) xfree (rs->last_pass_packet); rs->last_pass_packet = pass_packet; @@ -1785,11 +1783,9 @@ remote_program_signals (int numsigs, unsigned char *signals) if (!rs->last_program_signals_packet || strcmp (rs->last_program_signals_packet, packet) != 0) { - char *buf = rs->buf; - putpkt (packet); getpkt (&rs->buf, &rs->buf_size, 0); - packet_ok (buf, &remote_protocol_packets[PACKET_QProgramSignals]); + packet_ok (rs->buf, &remote_protocol_packets[PACKET_QProgramSignals]); xfree (rs->last_program_signals_packet); rs->last_program_signals_packet = packet; } -- 1.7.7.6