From 2c2b6e5f36a22d999e192da98f1d51c6c5093021 Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Fri, 9 Feb 2018 15:05:52 +0000 Subject: [PATCH] fix filename length check --- .../Project/ProjectEntityHandler.coffee | 6 ++--- .../Project/ProjectEntityHandlerTests.coffee | 22 +++++++++++++++++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/services/web/app/coffee/Features/Project/ProjectEntityHandler.coffee b/services/web/app/coffee/Features/Project/ProjectEntityHandler.coffee index 07ef5f6387..9a75092bd0 100644 --- a/services/web/app/coffee/Features/Project/ProjectEntityHandler.coffee +++ b/services/web/app/coffee/Features/Project/ProjectEntityHandler.coffee @@ -631,6 +631,9 @@ module.exports = ProjectEntityHandler = newPath = fileSystem: "#{path.fileSystem}/#{element.name}" mongo: path.mongo + # check if the path would be too long + if not SafePath.isAllowedLength newPath.fileSystem + return callback new Errors.InvalidNameError("path too long") ProjectEntityHandler.checkValidElementName folder, element.name, (err) => return callback(err) if err? id = element._id+'' @@ -648,9 +651,6 @@ module.exports = ProjectEntityHandler = checkValidElementName: (folder, name, callback = (err) ->) -> - # # # check if the path would be too long - # # if not SafePath.isAllowedLength "#{folder}/#{name}" - # # return callback new Error.InvalidNameError("path too long") # check if the name is already taken by a doc, file or # folder. If so, return an error "file already exists". err = new Errors.InvalidNameError("file already exists") diff --git a/services/web/test/unit/coffee/Project/ProjectEntityHandlerTests.coffee b/services/web/test/unit/coffee/Project/ProjectEntityHandlerTests.coffee index 5a41f320bd..4aad99106a 100644 --- a/services/web/test/unit/coffee/Project/ProjectEntityHandlerTests.coffee +++ b/services/web/test/unit/coffee/Project/ProjectEntityHandlerTests.coffee @@ -1399,6 +1399,28 @@ describe 'ProjectEntityHandler', -> @ProjectModel.findOneAndUpdate.called.should.equal false done() + it "should error if element name is too long", (done)-> + doc = + _id: ObjectId() + name: new Array(200).join("long-") + "something" + @ProjectEntityHandler._putElement @project, @folder._id, doc, "doc", (err)=> + @ProjectModel.findOneAndUpdate.called.should.equal false + err.should.deep.equal new Errors.InvalidNameError("invalid element name") + done() + + it "should error if the folder name is too long", (done)-> + @path = + mongo: "mongo.path", + fileSystem: new Array(200).join("subdir/") + "foo" + @projectLocator.findElement.callsArgWith(1, null, @folder, @path) + doc = + _id: ObjectId() + name: "something" + @ProjectEntityHandler._putElement @project, @folder._id, doc, "doc", (err)=> + @ProjectModel.findOneAndUpdate.called.should.equal false + err.should.deep.equal new Errors.InvalidNameError("path too long") + done() + it "should error if a document already exists with the same name", (done)-> doc = _id: ObjectId()