mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
add validation for express :content_id parameter
This commit is contained in:
parent
b456ea726d
commit
ff2175e727
3 changed files with 26 additions and 1 deletions
|
@ -29,6 +29,7 @@ Metrics.memory.monitor(logger)
|
||||||
|
|
||||||
const ProjectPersistenceManager = require('./app/js/ProjectPersistenceManager')
|
const ProjectPersistenceManager = require('./app/js/ProjectPersistenceManager')
|
||||||
const OutputCacheManager = require('./app/js/OutputCacheManager')
|
const OutputCacheManager = require('./app/js/OutputCacheManager')
|
||||||
|
const ContentCacheManager = require('./app/js/ContentCacheManager')
|
||||||
|
|
||||||
require('./app/js/db').sync()
|
require('./app/js/db').sync()
|
||||||
|
|
||||||
|
@ -76,6 +77,26 @@ app.param('build_id', function (req, res, next, buildId) {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
app.param('contentId', function (req, res, next, contentId) {
|
||||||
|
if (
|
||||||
|
contentId != null
|
||||||
|
? contentId.match(OutputCacheManager.CONTENT_REGEX)
|
||||||
|
: undefined
|
||||||
|
) {
|
||||||
|
return next()
|
||||||
|
} else {
|
||||||
|
return next(new Error(`invalid content id ${contentId}`))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
app.param('hash', function (req, res, next, hash) {
|
||||||
|
if (hash != null ? hash.match(ContentCacheManager.HASH_REGEX) : undefined) {
|
||||||
|
return next()
|
||||||
|
} else {
|
||||||
|
return next(new Error(`invalid hash ${hash}`))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
app.post(
|
app.post(
|
||||||
'/project/:project_id/compile',
|
'/project/:project_id/compile',
|
||||||
bodyParser.json({ limit: Settings.compileSizeLimit }),
|
bodyParser.json({ limit: Settings.compileSizeLimit }),
|
||||||
|
|
|
@ -115,4 +115,7 @@ async function writePdfStream(dir, hash, buffers) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = { update: callbackify(update) }
|
module.exports = {
|
||||||
|
HASH_REGEX: /^[0-9a-f]{64}$/,
|
||||||
|
update: callbackify(update)
|
||||||
|
}
|
||||||
|
|
|
@ -34,6 +34,7 @@ module.exports = OutputCacheManager = {
|
||||||
// build id is HEXDATE-HEXRANDOM from Date.now()and RandomBytes
|
// build id is HEXDATE-HEXRANDOM from Date.now()and RandomBytes
|
||||||
// for backwards compatibility, make the randombytes part optional
|
// for backwards compatibility, make the randombytes part optional
|
||||||
BUILD_REGEX: /^[0-9a-f]+(-[0-9a-f]+)?$/,
|
BUILD_REGEX: /^[0-9a-f]+(-[0-9a-f]+)?$/,
|
||||||
|
CONTENT_REGEX: /^[0-9a-f]+(-[0-9a-f]+)?$/,
|
||||||
CACHE_LIMIT: 2, // maximum number of cache directories
|
CACHE_LIMIT: 2, // maximum number of cache directories
|
||||||
CACHE_AGE: 60 * 60 * 1000, // up to one hour old
|
CACHE_AGE: 60 * 60 * 1000, // up to one hour old
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue