Merge pull request #74 from overleaf/revert-73-bg-skip-hash-for-bad-char-replacement

Revert "skip hash check when non-BMP characters replaced"
This commit is contained in:
Brian Gough 2019-06-27 11:40:33 +01:00 committed by GitHub
commit 44c36ee63b
2 changed files with 3 additions and 9 deletions

View file

@ -138,13 +138,10 @@ module.exports = UpdateManager =
# 16-bit character of a blackboard bold character (http://www.fileformat.info/info/unicode/char/1d400/index.htm).
# Something must be going on client side that is screwing up the encoding and splitting the
# two 16-bit characters so that \uD835 is standalone.
BAD_CHAR_REGEXP = /[\uD800-\uDFFF]/g
for op in update.op or []
if op.i? && BAD_CHAR_REGEXP.test(op.i)
if op.i?
# Replace high and low surrogate characters with 'replacement character' (\uFFFD)
op.i = op.i.replace(BAD_CHAR_REGEXP, "\uFFFD")
# remove any client-side hash because we have modified the content
delete update.hash
op.i = op.i.replace(/[\uD800-\uDFFF]/g, "\uFFFD")
return update
_addProjectHistoryMetadataToOps: (updates, pathname, projectHistoryId, lines) ->

View file

@ -212,7 +212,7 @@ describe "UpdateManager", ->
describe "with UTF-16 surrogate pairs in the update", ->
beforeEach ->
@update = {op: [{p: 42, i: "\uD835\uDC00"}], hash: "f1d2d2f924e986ac86fdf7b36c94bcdf32beec15"}
@update = {op: [{p: 42, i: "\uD835\uDC00"}]}
@UpdateManager.applyUpdate @project_id, @doc_id, @update, @callback
it "should apply the update but with surrogate pairs removed", ->
@ -223,9 +223,6 @@ describe "UpdateManager", ->
# \uFFFD is 'replacement character'
@update.op[0].i.should.equal "\uFFFD\uFFFD"
it "should skip the hash check by removing any hash field present", ->
@update.should.not.have.property('hash')
describe "with an error", ->
beforeEach ->
@error = new Error("something went wrong")