diff --git a/services/clsi/app/coffee/RequestParser.coffee b/services/clsi/app/coffee/RequestParser.coffee index 5979c75c20..90bc739f5c 100644 --- a/services/clsi/app/coffee/RequestParser.coffee +++ b/services/clsi/app/coffee/RequestParser.coffee @@ -42,7 +42,13 @@ module.exports = RequestParser = compile.rootResourcePath default: "main.tex" type: "string" - response.rootResourcePath = RequestParser._sanitizePath(rootResourcePath) + originalRootResourcePath = rootResourcePath + sanitizedRootResourcePath = RequestParser._sanitizePath(rootResourcePath) + response.rootResourcePath = sanitizedRootResourcePath + + for resource in response.resources + if resource.path == originalRootResourcePath + resource.path = sanitizedRootResourcePath catch error return callback error diff --git a/services/clsi/test/unit/coffee/RequestParserTests.coffee b/services/clsi/test/unit/coffee/RequestParserTests.coffee index 8545ff22a2..4cf6119831 100644 --- a/services/clsi/test/unit/coffee/RequestParserTests.coffee +++ b/services/clsi/test/unit/coffee/RequestParserTests.coffee @@ -206,11 +206,21 @@ describe "RequestParser", -> describe "with a root resource path that needs escaping", -> beforeEach -> - @validRequest.compile.rootResourcePath = "`rm -rf foo`.tex" + @badPath = "`rm -rf foo`.tex" + @goodPath = "rm -rf foo.tex" + @validRequest.compile.rootResourcePath = @badPath + @validRequest.compile.resources.push { + path: @badPath + date: "12:00 01/02/03" + content: "Hello world" + } @RequestParser.parse @validRequest, @callback @data = @callback.args[0][1] it "should return the escaped resource", -> - @data.rootResourcePath.should.equal "rm -rf foo.tex" + @data.rootResourcePath.should.equal @goodPath + + it "should also escape the resource path", -> + @data.resources[0].path.should.equal @goodPath