utf-8-validate
Advanced tools
Comparing version 1.2.2 to 2.0.0
@@ -1,3 +0,1 @@ | ||
'use strict'; | ||
/*! | ||
@@ -9,6 +7,66 @@ * UTF-8 validate: UTF-8 validation for WebSockets. | ||
'use strict'; | ||
exports.Validation = { | ||
isValidUTF8: function(buffer) { | ||
/** | ||
* Checks if a given buffer contains only correct UTF-8. | ||
* Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by | ||
* Markus Kuhn. | ||
* | ||
* @param {Buffer} buf The buffer to check | ||
* @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false` | ||
*/ | ||
isValidUTF8: function (buf) { | ||
if (!Buffer.isBuffer(buf)) { | ||
throw new TypeError('First argument needs to be a buffer'); | ||
} | ||
var len = buf.length; | ||
var i = 0; | ||
while (i < len) { | ||
if (buf[i] < 0x80) { // 0xxxxxxx | ||
i++; | ||
} else if ((buf[i] & 0xe0) === 0xc0) { // 110xxxxx 10xxxxxx | ||
if ( | ||
i + 1 === len || | ||
(buf[i + 1] & 0xc0) !== 0x80 || | ||
(buf[i] & 0xfe) === 0xc0 // overlong | ||
) { | ||
return false; | ||
} else { | ||
i += 2; | ||
} | ||
} else if ((buf[i] & 0xf0) === 0xe0) { // 1110xxxx 10xxxxxx 10xxxxxx | ||
if ( | ||
i + 2 >= len || | ||
(buf[i + 1] & 0xc0) !== 0x80 || | ||
(buf[i + 2] & 0xc0) !== 0x80 || | ||
buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80 || // overlong | ||
buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0 // surrogate (U+D800 - U+DFFF) | ||
) { | ||
return false; | ||
} else { | ||
i += 3; | ||
} | ||
} else if ((buf[i] & 0xf8) === 0xf0) { // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx | ||
if ( | ||
i + 3 >= len || | ||
(buf[i + 1] & 0xc0) !== 0x80 || | ||
(buf[i + 2] & 0xc0) !== 0x80 || | ||
(buf[i + 3] & 0xc0) !== 0x80 || | ||
buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80 || // overlong | ||
buf[i] === 0xf4 && buf[i + 1] > 0x8f || buf[i] > 0xf4 // > U+10FFFF | ||
) { | ||
return false; | ||
} else { | ||
i += 4; | ||
} | ||
} else { | ||
return false; | ||
} | ||
} | ||
return true; | ||
} | ||
}; |
{ | ||
"name": "utf-8-validate", | ||
"version": "1.2.2", | ||
"version": "2.0.0", | ||
"description": "Validate UTF-8 for Web", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
8718
72
1