diff --git a/CHANGELOG.md b/CHANGELOG.md
index 809ee67270..cff2e49e64 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,8 @@
+### Release v3.27.0
+
### New
+- Fix send null and browser check issues [#2165](https://github.com/kvhnuke/etherwallet/pull/2165)
- Add PIT, SKE tokens, add HUM contract [#2165](https://github.com/kvhnuke/etherwallet/pull/2165)
- Add ZIX token [#2163](https://github.com/kvhnuke/etherwallet/pull/2163)
- Add CRO contract [#2160](https://github.com/kvhnuke/etherwallet/pull/2160)
diff --git a/app/includes/header.tpl b/app/includes/header.tpl
index f29bfa89d2..6b7507bec6 100644
--- a/app/includes/header.tpl
+++ b/app/includes/header.tpl
@@ -100,18 +100,18 @@
@@if (site === 'mew' ) {
- 3.26.0 3.27.0 3.26.0 3.27.0
3.26.0
+3.27.0
3.26.0
+3.27.0
3.26.0
+3.27.0
Please click on an element
- - {{ record.title }} - -Directive | -How | -Source | -Rendered | -
ng-bind-html | -Automatically uses $sanitize | -<div ng-bind-html="snippet"> |
- - |
ng-bind-html | -Bypass $sanitize by explicitly trusting the dangerous value | -
- <div ng-bind-html="deliberatelyTrustDangerousSnippet()"> -</div>- |
- - |
ng-bind | -Automatically escapes | -<div ng-bind="snippet"> |
- - |
an html\nclick here\nsnippet
'); - }); + // In-place Multiplication + BN.prototype.imul = function imul (num) { + return this.clone().mulTo(num, this); + }; - it('should inline raw snippet if bound to a trusted value', function() { - expect(element(by.css('#bind-html-with-trust div')).getAttribute('innerHTML')). - toBe("an html\n" + - "click here\n" + - "snippet
"); - }); + BN.prototype.imuln = function imuln (num) { + assert(typeof num === 'number'); + assert(num < 0x4000000); - it('should escape snippet without any filter', function() { - expect(element(by.css('#bind-default div')).getAttribute('innerHTML')). - toBe("<p style=\"color:blue\">an html\n" + - "<em onmouseover=\"this.textContent='PWN3D!'\">click here</em>\n" + - "snippet</p>"); - }); + // Carry + var carry = 0; + for (var i = 0; i < this.length; i++) { + var w = (this.words[i] | 0) * num; + var lo = (w & 0x3ffffff) + (carry & 0x3ffffff); + carry >>= 26; + carry += (w / 0x4000000) | 0; + // NOTE: lo is 27bit maximum + carry += lo >>> 26; + this.words[i] = lo & 0x3ffffff; + } - it('should update', function() { - element(by.model('snippet')).clear(); - element(by.model('snippet')).sendKeys('new text'); - expect(element(by.css('#bind-html-with-sanitize div')).getAttribute('innerHTML')). - toBe('new text'); - expect(element(by.css('#bind-html-with-trust div')).getAttribute('innerHTML')).toBe( - 'new text'); - expect(element(by.css('#bind-default div')).getAttribute('innerHTML')).toBe( - "new <b onclick=\"alert(1)\">text</b>"); - }); -By enabling this setting without taking other precautions, you might expose your - * application to click-hijacking attacks. In these attacks, sanitized svg elements could be positioned - * outside of the containing element and be rendered over other elements on the page (e.g. a login - * link). Such behavior can then result in phishing incidents.
- * - *To protect against these, explicitly setup `overflow: hidden` css rule for all potential svg - * tags within the sanitized content:
- * - *
- * .rootOfTheIncludedContent svg {
- * overflow: hidden !important;
- * }
- *
- *