From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1039) id 01C9A3858C52; Thu, 11 Apr 2024 11:10:45 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 01C9A3858C52 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1712833846; bh=sqD4yGX0w01/BuyZjlvz/YU8k7Lom7N9PPrLC1a7dOg=; h=From:To:Subject:Date:From; b=FHgWvm2sSIC7KEuswpv9Jl5y8QWgFa8IlQzrQ2s3Z69UiuABiKCvD0QXkvajZbAKw xvkgnSF2bh7fr43RXGymEwIJpmvq+a3yOm94pOWzQVIPCh9NJCVUyoqCJ1nIqcrHxn wAwHZvpqrNt9slMMuGb59sf8J2gG/ADJW6OoW4ZI= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: H.J. Lu To: binutils-cvs@sourceware.org Subject: [binutils-gdb] gas: Fix memory leaks in ginsn.c X-Act-Checkin: binutils-gdb X-Git-Author: H.J. Lu X-Git-Refname: refs/heads/master X-Git-Oldrev: 9df979cab7676539918c6bcd24aa2c1bbb20b997 X-Git-Newrev: 80ec23548f144e7bdfe2e7e9bcf78279c100d1ee Message-Id: <20240411111046.01C9A3858C52@sourceware.org> Date: Thu, 11 Apr 2024 11:10:45 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D80ec23548f14= 4e7bdfe2e7e9bcf78279c100d1ee commit 80ec23548f144e7bdfe2e7e9bcf78279c100d1ee Author: H.J. Lu Date: Tue Apr 9 16:05:18 2024 -0700 gas: Fix memory leaks in ginsn.c =20 Free buffer memory after use in ginsn.c. =20 * ginsn.c (ginsn_dst_print): Free buffer after use. (ginsn_print): Likewise. Diff: --- gas/ginsn.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/gas/ginsn.c b/gas/ginsn.c index be06324f1f1..b60b2e542ac 100644 --- a/gas/ginsn.c +++ b/gas/ginsn.c @@ -507,6 +507,7 @@ ginsn_dst_print (struct ginsn_dst *dst) char *buf =3D XNEWVEC (char, 32); sprintf (buf, "%%r%d", ginsn_get_dst_reg (dst)); strcat (dst_str, buf); + free (buf); } else if (dst->type =3D=3D GINSN_DST_INDIRECT) { @@ -514,6 +515,7 @@ ginsn_dst_print (struct ginsn_dst *dst) sprintf (buf, "[%%r%d+%lld]", ginsn_get_dst_reg (dst), (long long int) ginsn_get_dst_disp (dst)); strcat (dst_str, buf); + free (buf); } =20 gas_assert (strlen (dst_str) < GINSN_LISTING_OPND_LEN); @@ -570,20 +572,26 @@ ginsn_print (ginsnS *ginsn) =20 /* src 1. */ src =3D ginsn_get_src1 (ginsn); + char *src_buf =3D ginsn_src_print (src); str_size +=3D snprintf (ginsn_str + str_size, GINSN_LISTING_LEN - str_si= ze, - " %s", ginsn_src_print (src)); + " %s", src_buf); + free (src_buf); gas_assert (str_size >=3D 0 && str_size < GINSN_LISTING_LEN); =20 /* src 2. */ src =3D ginsn_get_src2 (ginsn); + src_buf =3D ginsn_src_print (src); str_size +=3D snprintf (ginsn_str + str_size, GINSN_LISTING_LEN - str_si= ze, - "%s", ginsn_src_print (src)); + "%s", src_buf); + free (src_buf); gas_assert (str_size >=3D 0 && str_size < GINSN_LISTING_LEN); =20 /* dst. */ dst =3D ginsn_get_dst (ginsn); + char *dst_buf =3D ginsn_dst_print (dst); str_size +=3D snprintf (ginsn_str + str_size, GINSN_LISTING_LEN - str_si= ze, - "%s", ginsn_dst_print (dst)); + "%s", dst_buf); + free (dst_buf); =20 end: gas_assert (str_size >=3D 0 && str_size < GINSN_LISTING_LEN);