public inbox for linux-bluetooth@vger.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox