OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2011 Google, Inc. All rights reserved. | 2 * Copyright (C) 2011 Google, Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
(...skipping 1446 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1457 // RFC2616, section 4.2 specifies that headers appearing multiple times can | 1457 // RFC2616, section 4.2 specifies that headers appearing multiple times can |
1458 // be combined with a comma. Walk the header string, and parse each comma | 1458 // be combined with a comma. Walk the header string, and parse each comma |
1459 // separated chunk as a separate header. | 1459 // separated chunk as a separate header. |
1460 const UChar* position = begin; | 1460 const UChar* position = begin; |
1461 while (position < end) { | 1461 while (position < end) { |
1462 skipUntil(position, end, ','); | 1462 skipUntil(position, end, ','); |
1463 | 1463 |
1464 // header1,header2 OR header1 | 1464 // header1,header2 OR header1 |
1465 // ^ ^ | 1465 // ^ ^ |
1466 OwnPtr<CSPDirectiveList> policy = CSPDirectiveList::create(this, begin,
position, type); | 1466 OwnPtr<CSPDirectiveList> policy = CSPDirectiveList::create(this, begin,
position, type); |
1467 if (!policy->isReportOnly() && !policy->allowEval(0, SuppressReport)) | 1467 |
| 1468 // We disable 'eval()' even in the case of report-only policies, and rel
y on the check in the V8Initializer::codeGenerationCheckCallbackInMainThread cal
lback to determine whether the call should execute or not. |
| 1469 if (!policy->allowEval(0, SuppressReport)) |
1468 m_scriptExecutionContext->disableEval(policy->evalDisabledErrorMessa
ge()); | 1470 m_scriptExecutionContext->disableEval(policy->evalDisabledErrorMessa
ge()); |
1469 | 1471 |
1470 m_policies.append(policy.release()); | 1472 m_policies.append(policy.release()); |
1471 | 1473 |
1472 // Skip the comma, and begin the next header from the current position. | 1474 // Skip the comma, and begin the next header from the current position. |
1473 ASSERT(position == end || *position == ','); | 1475 ASSERT(position == end || *position == ','); |
1474 skipExactly(position, end, ','); | 1476 skipExactly(position, end, ','); |
1475 begin = position; | 1477 begin = position; |
1476 } | 1478 } |
1477 } | 1479 } |
(...skipping 425 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1903 // Collisions have no security impact, so we can save space by storing only
the string's hash rather than the whole report. | 1905 // Collisions have no security impact, so we can save space by storing only
the string's hash rather than the whole report. |
1904 return !m_violationReportsSent.contains(report.impl()->hash()); | 1906 return !m_violationReportsSent.contains(report.impl()->hash()); |
1905 } | 1907 } |
1906 | 1908 |
1907 void ContentSecurityPolicy::didSendViolationReport(const String& report) | 1909 void ContentSecurityPolicy::didSendViolationReport(const String& report) |
1908 { | 1910 { |
1909 m_violationReportsSent.add(report.impl()->hash()); | 1911 m_violationReportsSent.add(report.impl()->hash()); |
1910 } | 1912 } |
1911 | 1913 |
1912 } // namespace WebCore | 1914 } // namespace WebCore |
OLD | NEW |