public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
From: Nick Alcock <nick.alcock@oracle.com>
To: binutils@sourceware.org
Subject: [PATCH 3/8] libctf, serialize: functions with no args have a NULL dtd_vlen
Date: Wed, 24 Mar 2021 01:21:53 +0000	[thread overview]
Message-ID: <20210324012158.35472-3-nick.alcock@oracle.com> (raw)
In-Reply-To: <20210324012158.35472-1-nick.alcock@oracle.com>

Every place that accesses a function's dtd_vlen accesses it only if the
number of args is nonzero, except the serializer, which always tries to
memcpy it.  The number of bytes it memcpys in this case is zero, but it
is still undefined behaviour to copy zero bytes from a null pointer.
So check for this case explicitly.

libctf/ChangeLog
2021-03-23  Nick Alcock  <nick.alcock@oracle.com>

	PR libctf/27628
	* ctf-serialize.c (ctf_emit_type_sect): Allow for a NULL vlen in
	CTF_K_FUNCTION types.
---
 libctf/ctf-serialize.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/libctf/ctf-serialize.c b/libctf/ctf-serialize.c
index 0811b7b6efe..9f50280176c 100644
--- a/libctf/ctf-serialize.c
+++ b/libctf/ctf-serialize.c
@@ -849,7 +849,9 @@ ctf_emit_type_sect (ctf_dict_t *fp, unsigned char **tptr)
 	  break;
 
 	case CTF_K_FUNCTION:
-	  memcpy (t, dtd->dtd_vlen, sizeof (uint32_t) * (vlen + (vlen & 1)));
+	  /* Functions with no args also have no vlen.  */
+	  if (dtd->dtd_vlen)
+	    memcpy (t, dtd->dtd_vlen, sizeof (uint32_t) * (vlen + (vlen & 1)));
 	  t += sizeof (uint32_t) * (vlen + (vlen & 1));
 	  break;
 
-- 
2.31.0.253.gdec51257f3


  parent reply	other threads:[~2021-03-24  1:22 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-24  1:21 [PATCH 1/8] libctf, dump: do not emit size or alignment if it would error Nick Alcock
2021-03-24  1:21 ` [PATCH 2/8] include: always do unsigned left-shift in CTF_SET_STID Nick Alcock
2021-03-24  1:21 ` Nick Alcock [this message]
2021-03-24  1:21 ` [PATCH 4/8] libctf: make ctf_bfdopen_ctfsect a debugger entry point Nick Alcock
2021-03-24  1:21 ` [PATCH 5/8] libctf: don't dereference out-of-bounds locations in the qualifier hashtab Nick Alcock
2021-03-25  0:02   ` Hans-Peter Nilsson
2021-03-25 15:53     ` Nick Alcock
2021-03-24  1:21 ` [PATCH 6/8] libctf: fix memory leak in a test Nick Alcock
2021-03-24  1:21 ` [PATCH 7/8] libctf: fix ELF-in-BFD checks in the presence of ASAN Nick Alcock
2021-03-24  1:21 ` [PATCH 8/8] ld: do not rely on the exact size of the CTF symtypetabs in test results Nick Alcock

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210324012158.35472-3-nick.alcock@oracle.com \
    --to=nick.alcock@oracle.com \
    --cc=binutils@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).