All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bastien Nocera <hadess@hadess.net>
To: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
Cc: linux-bluetooth@vger.kernel.org
Subject: Re: Broken SDP parsing?
Date: Mon, 09 Mar 2009 17:09:39 +0000	[thread overview]
Message-ID: <1236618579.32264.23.camel@cookie.hadess.net> (raw)
In-Reply-To: <2d5a2c100903090940m4aa3b7bbj5c0528ea1b175d5e@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 812 bytes --]

On Mon, 2009-03-09 at 13:40 -0300, Luiz Augusto von Dentz wrote:
> Hi Bastien,
> 
> On Mon, Mar 9, 2009 at 12:25 PM, Bastien Nocera <hadess@hadess.net> wrote:
> > On Mon, 2009-03-09 at 11:32 -0300, Luiz Augusto von Dentz wrote:
> > Problem was sdp_data_alloc() falling back to doing an strlen() on the
> > string, instead of taking its existing length into account. That would
> > break any strings with NULLs embedded.
> >
> > The attached patch fixes this. I'm not certain that making this public
> > is useful, but feel free to make it so if you feel it's needed.
> >
> > Cheers
> >
> 
> Sounds good to me, I will check with Marcel or Johan if they can get
> this changes upstream.

Apparently &#00; isn't an allowed character in XML, so the attached
patch just swaps it out for a space. Much easier.

Cheers

[-- Attachment #2: bluez-sdp-xml-with-nulls-2.patch --]
[-- Type: text/x-patch, Size: 748 bytes --]

diff --git a/common/sdp-xml.c b/common/sdp-xml.c
index 0403dcd..c3d3934 100644
--- a/common/sdp-xml.c
+++ b/common/sdp-xml.c
@@ -239,9 +239,7 @@ static void convert_raw_data_to_xml(sdp_data_t *value, int indent_level,
 		hex = 0;
 
 		for (i = 0; i < length; i++) {
-			if (value->val.str[i] == '\0')
-				break;
-			if (!isprint(value->val.str[i])) {
+			if (!isprint(value->val.str[i]) && value->val.str[i] != '\0') {
 				hex = 1;
 				break;
 			}
@@ -304,7 +302,9 @@ static void convert_raw_data_to_xml(sdp_data_t *value, int indent_level,
 					strBuf[j++] = 'o';
 					strBuf[j++] = 't';
 				}
-				else {
+				else if (value->val.str[i] == '\0') {
+					strBuf[j++] = ' ';
+				} else {
 					strBuf[j++] = value->val.str[i];
 				}
 			}

  reply	other threads:[~2009-03-09 17:09 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-06  1:00 Broken SDP parsing? Bastien Nocera
2009-03-08 14:46 ` Bastien Nocera
2009-03-09 13:08   ` Luiz Augusto von Dentz
2009-03-09 14:14     ` Bastien Nocera
2009-03-09 14:32       ` Luiz Augusto von Dentz
2009-03-09 14:53         ` Luiz Augusto von Dentz
2009-03-09 15:25         ` Bastien Nocera
2009-03-09 16:40           ` Luiz Augusto von Dentz
2009-03-09 17:09             ` Bastien Nocera [this message]
2009-03-09 18:04               ` Johan Hedberg
2009-03-09 19:29                 ` Port CUPS discovery to BlueZ 4.x (Re: Broken SDP parsing?) Bastien Nocera
2009-03-13 15:37                 ` Broken SDP parsing? Bastien Nocera
2009-03-13 18:15                   ` Johan Hedberg
2009-03-14  0:39                     ` Bastien Nocera
2009-03-14 13:29                       ` Johan Hedberg

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=1236618579.32264.23.camel@cookie.hadess.net \
    --to=hadess@hadess.net \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=luiz.dentz@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.