Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: "Mark Kettenis" <mark.kettenis@xs4all.nl>
To: "Mark Kettenis" <mark.kettenis@xs4all.nl>,
	        "Vladimir Prus" <vladimir@codesourcery.com>,
	        gdb-patches@sources.redhat.com
Subject: Re: [PATCH] zero-terminate result of target_read_alloc
Date: Tue, 18 Jul 2006 13:15:00 -0000	[thread overview]
Message-ID: <22754.192.87.1.22.1153228499.squirrel@webmail.xs4all.nl> (raw)
In-Reply-To: <20060718123436.GB14653@nevyn.them.org>

>  On Tue, Jul 18, 2006 at 01:25:22PM +0200, Mark Kettenis wrote:
> > >
> > >  This patch makes result of target_read_alloc zero-terminated.
> > >  The point is that often the object is not allowed to contain embedded
> > >  zeros,
> > >  and working with zero-terminated strings is much easier.
> > >
> > >  OK?
> >
> > This is wrong.  Either the terminating nul is part of the object you're
> > reading or it is not.  GDB shouldn't at its own.
>
>  I figured the same but actually reading a couple of objects and
>  managing them convinced me that Volodya's right.  Note that he's not
>  adding one to the length returned - if you want binary data, you'll get
>  binary data.  It just allows you to easily treat the result as a string
>  if you plan to treat it as a string anyway.

Sorry, but the whole distinction between strings and binary data is wrong.
Strings are binary data, including the terminating NUL.  Volodya's patch
addresses things at the wrong level.  Whatever we read using
target_read_partial() should already include the terminating NUL.

>  As you can probably guess from context, we have these bunches of XML
>  files that we read from the target and then do text processing on.
>  On the branch where I developed the XML bits for the first time, I
>  didn't think to make this change - so the very first thing I had to do
>  with the result of target_read_alloc was to allocate something one byte
>  bigger with a NUL on the end of it!

So whatever reads the XML from the target should make sure things are
NUL-terminated, and report the total length, including the terminating
NUL.

I guess you're thinking too much in terms of the remote protocol, where
you need to make the distinction between text and binary data because
you have to encode the latter to avoid problems with embedded NUL's.  But
that's really specific to the way our remote protocol works, and therefore
should be handled completely in the remote target vector code.

Mark



  reply	other threads:[~2006-07-18 13:15 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-07-18  9:56 Vladimir Prus
2006-07-18 11:25 ` Mark Kettenis
2006-07-18 11:33   ` Vladimir Prus
2006-07-18 12:34   ` Daniel Jacobowitz
2006-07-18 13:15     ` Mark Kettenis [this message]
2006-07-18 13:39       ` Daniel Jacobowitz
2006-07-18 13:51         ` Vladimir Prus
2006-07-18 19:51           ` Jim Blandy
2006-07-24  4:09   ` Daniel Jacobowitz
2006-07-24 21:41     ` Mark Kettenis
2006-07-24 22:00       ` Daniel Jacobowitz
2006-07-26 21:53         ` Mark Kettenis
2006-07-26 22:25           ` Daniel Jacobowitz
2006-07-26 22:36             ` Mark Kettenis
2006-07-27 21:25               ` Daniel Jacobowitz

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=22754.192.87.1.22.1153228499.squirrel@webmail.xs4all.nl \
    --to=mark.kettenis@xs4all.nl \
    --cc=gdb-patches@sources.redhat.com \
    --cc=vladimir@codesourcery.com \
    /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