WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
Bug 56942
EventSource should only accept UTF-8 charset
https://bugs.webkit.org/show_bug.cgi?id=56942
Summary
EventSource should only accept UTF-8 charset
Julien Chaffraix
Reported
2011-03-23 11:33:06 PDT
This is a follow-up of
bug45372
. The discussion hinted at accepting UTF-8 charset for EventSource (the charset mentioned in the spec) but failing other charset and logging it to the console. What got landed is not accepting any charset altogether. This bug is about implementing the previous behavior for compatibility with some servers sending charset automatically (tomcat was mentioned).
Attachments
Proposed fix: Accept charset UTF-8, block and log any other charset
(11.52 KB, patch)
2011-03-23 11:46 PDT
,
Julien Chaffraix
ap
: review-
ap
: commit-queue-
Details
Formatted Diff
Diff
New patch following Alexey's comments: Only accept UTF-8 and log most rejection cases
(13.82 KB, patch)
2011-03-28 19:50 PDT
,
Julien Chaffraix
no flags
Details
Formatted Diff
Diff
Same as previously - with a work-around for some PHP escaping issues
(14.06 KB, patch)
2011-04-03 19:53 PDT
,
Julien Chaffraix
ap
: review+
ap
: commit-queue-
Details
Formatted Diff
Diff
Same as previous but fixed Alexey's comments
(14.20 KB, patch)
2011-04-07 18:10 PDT
,
Julien Chaffraix
no flags
Details
Formatted Diff
Diff
Show Obsolete
(3)
View All
Add attachment
proposed patch, testcase, etc.
Ian 'Hixie' Hickson
Comment 1
2011-03-23 11:39:42 PDT
Per spec only streams with the exact MIME type "text/event-stream" should be accepted. If you think other streams should be accepted too, please make sure to contact the mailing list as well so we can update the spec accordingly.
Julien Chaffraix
Comment 2
2011-03-23 11:46:20 PDT
Created
attachment 86657
[details]
Proposed fix: Accept charset UTF-8, block and log any other charset
Alexey Proskuryakov
Comment 3
2011-03-23 12:31:10 PDT
Comment on
attachment 86657
[details]
Proposed fix: Accept charset UTF-8, block and log any other charset View in context:
https://bugs.webkit.org/attachment.cgi?id=86657&action=review
Does charset="UTF-8" (with quotes) work? Could you add a test? Pelase do send a message to HTML mailing list, as suggested by Ian.
> LayoutTests/http/tests/eventsource/eventsource-content-type-charset-expected.txt:1 > +CONSOLE MESSAGE: line 1: EventSource's response had a charset ("Windows-1152") that is not UTF-8. Aborting the connection.
There are two failure subtests, so why only one console message?
> Source/WebCore/page/EventSource.cpp:186 > - if (statusCode == 200 && response.mimeType() == "text/event-stream") { > + bool isResponseValid = statusCode == 200 && response.mimeType() == "text/event-stream";
I'm confused. The bug description sounds like we should be allowing more than we do today, but the actual fix makes code more restrictive. Which is correct? Also, s/isResponseValid/responseIsValid/ (or isValidResponse).
> Source/WebCore/page/EventSource.cpp:194 > + String message = "EventSource's response had a charset (\""; > + message += charset; > + message += "\") that is not UTF-8. Aborting the connection.";
I think it's wrong grammar to have different tenses in one sentence (had... is).
Julien Chaffraix
Comment 4
2011-03-23 14:05:53 PDT
> Does charset="UTF-8" (with quotes) work? Could you add a test?
It does, I will add some testing along those lines.
> Pelase do send a message to HTML mailing list, as suggested by Ian.
Sure. Ian, we are actually already allowing a charset in the Content-Type header.
> > LayoutTests/http/tests/eventsource/eventsource-content-type-charset-expected.txt:1 > > +CONSOLE MESSAGE: line 1: EventSource's response had a charset ("Windows-1152") that is not UTF-8. Aborting the connection. > > There are two failure subtests, so why only one console message?
There is 2 failures but only one failure involves an invalid charset. We only log the error when we have a valid mime-type but an invalid charset thus only one console message. Would like me to log also if the mime-type is wrong?
> > Source/WebCore/page/EventSource.cpp:186 > > - if (statusCode == 200 && response.mimeType() == "text/event-stream") { > > + bool isResponseValid = statusCode == 200 && response.mimeType() == "text/event-stream"; > > I'm confused. The bug description sounds like we should be allowing more than we do today, but the actual fix makes code more restrictive. Which is correct?
This is correct. This change is restricting the behavior to only accept UTF-8 as was suggested in the previous bug.
> Also, s/isResponseValid/responseIsValid/ (or isValidResponse).
OK.
> > Source/WebCore/page/EventSource.cpp:194 > > + String message = "EventSource's response had a charset (\""; > > + message += charset; > > + message += "\") that is not UTF-8. Aborting the connection."; > > I think it's wrong grammar to have different tenses in one sentence (had... is).
I will fix it to use present in both cases.
Alexey Proskuryakov
Comment 5
2011-03-23 14:41:52 PDT
Comment on
attachment 86657
[details]
Proposed fix: Accept charset UTF-8, block and log any other charset
> This is correct. This change is restricting the behavior to only accept UTF-8 as was suggested in the previous bug.
OK. Please rename the bug in ChangeLog.
> Would like me to log also if the mime-type is wrong?
Sounds like that would be useful for developers.
Julien Chaffraix
Comment 6
2011-03-24 07:23:20 PDT
Brought this change to the WHATWG group:
http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-March/031003.html
Julien Chaffraix
Comment 7
2011-03-28 19:50:00 PDT
Created
attachment 87251
[details]
New patch following Alexey's comments: Only accept UTF-8 and log most rejection cases As the proposal did raise any objection, here is the updated patch.
WebKit Commit Bot
Comment 8
2011-03-29 05:54:47 PDT
Comment on
attachment 87251
[details]
New patch following Alexey's comments: Only accept UTF-8 and log most rejection cases Rejecting
attachment 87251
[details]
from commit-queue. Failed to run "['./Tools/Scripts/webkit-patch', '--status-host=queues.webkit.org', '--bot-id=cr-jail-8', 'build-..." exit_code: 2 Last 500 characters of output: /tests/appcache ........................................................... http/tests/cache ........ http/tests/canvas/philip/tests .......... http/tests/canvas/webgl . http/tests/cookies ..... http/tests/css .... http/tests/eventsource .. http/tests/eventsource/eventsource-content-type-charset.html -> failed Exiting early after 1 failures. 22089 tests run. 569.43s total testing time 22088 test cases (99%) succeeded 1 test case (<1%) had incorrect layout 14 test cases (<1%) had stderr output Full output:
http://queues.webkit.org/results/8284290
Julien Chaffraix
Comment 9
2011-03-31 07:50:41 PDT
> http/tests/eventsource/eventsource-content-type-charset.html -> failed
The cause of failure is that the Mac implementation of ResourceResponse::textEncodingName does not strip the leading and trailing quotes in the charset. Instead it escapes them and we fail the comparison to "utf-8". Qt, for example, does remove them. I could add a work-around for that or just go ahead and fix the output of Mac, documenting what we expect textEncodingName to return.
Alexey Proskuryakov
Comment 10
2011-03-31 09:04:36 PDT
> The cause of failure is that the Mac implementation of ResourceResponse::textEncodingName does not strip the leading and trailing quotes in the charset.
I thought that I added a workaround for this in
bug 46573
. What did go wrong?
Julien Chaffraix
Comment 11
2011-03-31 13:47:49 PDT
> I thought that I added a workaround for this in
bug 46573
. What did go wrong?
I haven't had time to debug the problem so I don't know what's going on yet. I will look into why this is happening here.
Julien Chaffraix
Comment 12
2011-04-03 19:50:13 PDT
(In reply to
comment #11
)
> > I thought that I added a workaround for this in
bug 46573
. What did go wrong? > > I haven't had time to debug the problem so I don't know what's going on yet. I will look into why this is happening here.
Alexey, the problem is not in WebKit. It looks like PHP on Mac escapes quotes in the charset with slashes which is causing the problem (I had to look at some network capture to find this out). I will be posting an updated patch to work around this misbehavior.
Julien Chaffraix
Comment 13
2011-04-03 19:53:02 PDT
Created
attachment 88028
[details]
Same as previously - with a work-around for some PHP escaping issues
WebKit Review Bot
Comment 14
2011-04-03 19:55:32 PDT
Attachment 88028
[details]
did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style']" exit_code: 1 LayoutTests/ChangeLog-2011-02-16:27403: ChangeLog entry has no bug number [changelog/bugnumber] [5] Total errors found: 1 in 8 files If any of these errors are false positives, please file a bug against check-webkit-style.
Alexey Proskuryakov
Comment 15
2011-04-03 21:02:38 PDT
Comment on
attachment 88028
[details]
Same as previously - with a work-around for some PHP escaping issues View in context:
https://bugs.webkit.org/attachment.cgi?id=88028&action=review
> LayoutTests/ChangeLog:21 > + in the URL. Also added a work-around a bug in PHP.
I don't think that it's a bug. A quick web search suggested that it's a configuration option, and we should do something like: if (get_magic_quotes_gpc()){ $value = stripslashes($value); } See also: <
http://php.net/manual/en/function.stripslashes.php
>, <
http://php.net/manual/en/function.get-magic-quotes-gpc.php
>. Please use the proposed pattern, and fix the ChangeLog accordingly.
> LayoutTests/http/tests/eventsource/eventsource-content-type-charset.html:35 > + 'text/event-stream; charset=windows-1152',
Did you mean to use a non-existent charset here? If so, 1152 is an overly subtle way to express that. I think that we should test windows-1251 or us-ascii.
Eric Seidel (no email)
Comment 16
2011-04-06 10:46:09 PDT
Comment on
attachment 87251
[details]
New patch following Alexey's comments: Only accept UTF-8 and log most rejection cases Cleared Alexey Proskuryakov's review+ from obsolete
attachment 87251
[details]
so that this bug does not appear in
http://webkit.org/pending-commit
.
Julien Chaffraix
Comment 17
2011-04-07 17:35:12 PDT
> > LayoutTests/ChangeLog:21 > > + in the URL. Also added a work-around a bug in PHP. > > I don't think that it's a bug. A quick web search suggested that it's a configuration option, and we should do something like: > > if (get_magic_quotes_gpc()){ > $value = stripslashes($value); > } > > See also: <
http://php.net/manual/en/function.stripslashes.php
>, <
http://php.net/manual/en/function.get-magic-quotes-gpc.php
>.
Indeed. I should have expected some different options on Mac. Do we know why the configuration is different between Linux and Mac? It looks like something that will bite us at some point and would like to fix.
> > LayoutTests/http/tests/eventsource/eventsource-content-type-charset.html:35 > > + 'text/event-stream; charset=windows-1152', > > Did you mean to use a non-existent charset here? If so, 1152 is an overly subtle way to express that.
No, this is a typo. Changed it to windows-1251 as the logic does not care if the charset exists or not.
Alexey Proskuryakov
Comment 18
2011-04-07 17:49:36 PDT
> Do we know why the configuration is different between Linux and Mac?
I don't know.
Julien Chaffraix
Comment 19
2011-04-07 18:10:09 PDT
Created
attachment 88746
[details]
Same as previous but fixed Alexey's comments
WebKit Review Bot
Comment 20
2011-04-07 18:12:12 PDT
Attachment 88746
[details]
did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'LayoutTests/ChangeLog', u'LayoutTests/Chan..." exit_code: 1 LayoutTests/ChangeLog-2011-02-16:27403: ChangeLog entry has no bug number [changelog/bugnumber] [5] Total errors found: 1 in 8 files If any of these errors are false positives, please file a bug against check-webkit-style.
WebKit Commit Bot
Comment 21
2011-04-07 23:42:30 PDT
The commit-queue encountered the following flaky tests while processing
attachment 88746
[details]
: fast/loader/recursive-before-unload-crash.html
bug 50880
(authors:
beidson@apple.com
and
eric@webkit.org
) The commit-queue is continuing to process your patch.
WebKit Commit Bot
Comment 22
2011-04-07 23:45:50 PDT
Comment on
attachment 88746
[details]
Same as previous but fixed Alexey's comments Clearing flags on attachment: 88746 Committed
r83260
: <
http://trac.webkit.org/changeset/83260
>
WebKit Commit Bot
Comment 23
2011-04-07 23:45:55 PDT
All reviewed patches have been landed. Closing bug.
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug