Closed
Bug 78876
Opened 24 years ago
Closed 24 years ago
null bytes badly interpreted in base64-encoded data: URI scheme
Categories
(Core :: Networking, defect)
Tracking
()
VERIFIED
FIXED
mozilla0.9.1
People
(Reporter: david+bugs, Assigned: neeti)
References
()
Details
(Keywords: testcase, Whiteboard: want for mozilla 0.9.1)
Attachments
(1 file)
(deleted),
patch
|
Details | Diff | Splinter Review |
nsDataChannel::ParseData() uses PL_strlen() to compute the length of
base64-encoded data, which means that whenever the data contain a null byte,
they will be truncated.
Test case: the following URI (same as URL field above in bug report)
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9EFBAoYMhVvMQIAAAAtSURBVHicY/z//z8DHoBH+v///yy4FDEyMjIwMDDhM3lgpaEuh7gTEzDiDxYA9HEPDF90e5YAAAAASUVORK5CYII=
should point to a 10*10 PNG image representing a small square. Instead, it does
some quite weird things (my build says Image 13660284x1075756316 pixels and
prints the URI itself in the body, but I expect this to be architecture dependent).
This was introduced by an incorrect resolution of bug 53792. See also final
comments on bug 47288. A patch which fixes this is forthcoming.
Reporter | ||
Comment 1•24 years ago
|
||
Comment 2•24 years ago
|
||
good catch.
let me review your fix now.
Status: UNCONFIRMED → NEW
Ever confirmed: true
David: I applied the patch and see the image of the small square being
displayed. However, when I reload, I see the following assertions before it
loads the page again.
Seth : could you review this?
###!!! ASSERTION: nsDataChannel::Cancel: 'Not Reached', file L:\build\mozilla\ne
twerk\protocol\data\src\nsDataChannel.cpp, line 255
###!!! ASSERTION: nsDataChannel::Cancel: 'Not Reached', file L:\build\mozilla\ne
twerk\protocol\data\src\nsDataChannel.cpp, line 255
###!!! ASSERTION: Cancel failed: 'NS_SUCCEEDED(cancelRv)', file l:\build\mozilla
\netwerk\base\src\nsAsyncStreamListener.cpp, line 109
###!!! ASSERTION: nsDataChannel::Cancel: 'Not Reached', file L:\build\mozilla\ne
twerk\protocol\data\src\nsDataChannel.cpp, line 255
###!!! ASSERTION: Cancel failed: 'NS_SUCCEEDED(cancelRv)', file l:\build\mozilla
\netwerk\base\src\nsAsyncStreamListener.cpp, line 109
Comment 4•24 years ago
|
||
What is going on with this bug? Seth, did you have the chance to review?
Whiteboard: want for mozilla 0.9.1
Comment 5•24 years ago
|
||
I haven't reviewed / tested yet. on my short list of things to do today.
Comment 6•24 years ago
|
||
testing this fix now...
Comment 7•24 years ago
|
||
I tested the patch. it's good.
the assertions are not related to this bug. probably a bug with data urls and
the mem cache, if you made me guess without looking.
r=sspitzer
Comment 8•24 years ago
|
||
new bug logged on the assertions. #79896
this is ready for sr and checkin.
it's necko, so you might want valeski or gagan for the sr.
Comment 11•24 years ago
|
||
please test the following bugs, we've changed the way we compute the length
several times now:
http://bugzilla.mozilla.org/show_bug.cgi?id=53792
http://bugzilla.mozilla.org/show_bug.cgi?id=35439
I believe your patch will re-introduce
http://bugzilla.mozilla.org/show_bug.cgi?id=21314
I think we're chasing our tails w/ broken usages of data: urls unfortunately :-/.
Assignee | ||
Comment 12•24 years ago
|
||
I tested the above three bugs with and without the above patch.
1. For bug http://bugzilla.mozilla.org/show_bug.cgi?id=53792, we display the
same data with and without the patch.
2. For bug http://bugzilla.mozilla.org/show_bug.cgi?id=35439, for the testcase
http://bugzilla.mozilla.org/showattachment.cgi?attach_id=7466
We do not show #2 in the build without the patch, but in a build with the patch
we show #2.
For the test link http://pmt.sourceforge.net/gamma_test/ we broken with and
without the patch.
3. For bug http://bugzilla.mozilla.org/show_bug.cgi?id=21314
I do not see random characters appearing at the bottom of messages in a build
with the patch.
Was there a specfic test case email message which showed the bug?
Seth: Could you try testing bug
http://bugzilla.mozilla.org/show_bug.cgi?id=21314 with the above patch. It would
help if you could also verify we are causing any regressions.
Thanks,
Neeti
Comment 13•24 years ago
|
||
I'm overloaded right now. neeti, can you drive this?
Assignee | ||
Comment 14•24 years ago
|
||
Judson: I have tested bug http://bugzilla.mozilla.org/show_bug.cgi?id=21314 with
the patch applied on linux and windows, and I do not see any random characters
appearing at the bottom of messages.
Comment 15•24 years ago
|
||
as I pointed out earlier. I suspect we're just bouncing a bug back and forth.
your code looks fine to me, r=valeski, but we just need to be ready for another
bug to bounce back up, and determine which we want to supress.
Assignee | ||
Comment 16•24 years ago
|
||
I agree.
Assignee | ||
Comment 17•24 years ago
|
||
checked in fix
Status: NEW → RESOLVED
Closed: 24 years ago
Resolution: --- → FIXED
Comment 18•24 years ago
|
||
I can now see base64 encoded images using the data: protocol (cool!), but now I
crash on base64 encoded text/html.
For instance, the following crashes mozilla, but shows up just fine in Netscape
4.77...
data:text/html;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMD
AgVHJhbnNpdGlvbmFs
Ly9FTiIKImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CjxodG1sPjxoZWFk
Pjx0aXRsZT5DcmVhemlvbmUgVXRlbnRpPC90aXRsZT48L2hlYWQ+Cjxib2R5IGJnY29sb3I9Indo
aXRlIj48Zm9udCBmYWNlPSJzYW5zLXNlcmlmIiBzaXplPTM+CgombmJzcDsgCgo8aDE+UHJvdmEg
ZGkgaWZyYW1lPC9oMT4KVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJv
dmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkg
cHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8g
ZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVz
dG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEg
VGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJv
dmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkg
cHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEgVGVzdG8g
ZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEgVGVz
dG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEg
VGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJv
dmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkg
cHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8g
ZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVz
dG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEK
VGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJv
dmEKVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkg
cHJvdmEKCjwvZm9udD48L2JvZHk+PC9odG1sPgoK
also, base64 encoded mp3's play immediately with the system default mp3 player
in Netscape 4.77, but pop up a download dialog in Mozilla...seems to confuse
Mozilla. I'll post the base64 mp3 if anyone wants to test that out.
jake
Comment 19•24 years ago
|
||
data:text/html;base64,PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDAgVHJhbnNpdGlvbmFsLy9FTiIKImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CjxodG1sPjxoZWFkPjx0aXRsZT5DcmVhemlvbmUgVXRlbnRpPC90aXRsZT48L2hlYWQ+Cjxib2R5IGJnY29sb3I9IndoaXRlIj48Zm9udCBmYWNlPSJzYW5zLXNlcmlmIiBzaXplPTM+CgombmJzcDsgCgo8aDE+UHJvdmEgZGkgaWZyYW1lPC9oMT4KVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEgVGVzdG8gZGkgcHJvdmEKCjwvZm9udD48L2JvZHk+PC9odG1sPgoK
works for me on today's build. doesn't crash on linux.
about the mp3 problem, I think that's by design. but log a bug on it if you
think otherwise. (cc mscott on it.)
Comment 20•24 years ago
|
||
Seth, you are partially right about the text/html. I took out any line breaks
and/or spaces and it rendered fine without crashing.
however, Netscape 4.77 deals with the line breaks/spaces transparently. For
instance, if I copy your example into the Address box and view it, it makes no
difference whether there are spaces or not for Netscape 4.77 and it most
certainly does not crash.
To test this, try puting even one single space into into the base64 text that
you provided, have Mozilla load that, and watch it crash immediately.
That seems just a bit sensitive to me. I could be evil and put base64 data
with line breaks/spaces in a web page to crash peoples browsers intentionally.
hehehehehehehe.
It isn't overly functional if it is that sensitive.
I dont' think this bug is fixed until it is robust enough not to crash on
something that simple.
jake
Comment 21•24 years ago
|
||
jake, log a new bug on this problem.
Comment 22•24 years ago
|
||
reported bug 81185 per Seth's comment
jake
Comment 23•24 years ago
|
||
reported bug 81190 about strange behavior in handling base64 encoded mp3's
Jake
Comment 24•24 years ago
|
||
*** Bug 76312 has been marked as a duplicate of this bug. ***
You need to log in
before you can comment on or make changes to this bug.
Description
•