fix: path traversal vuln

This commit is contained in:
Paul Pfeister
2025-01-31 01:26:19 -05:00
parent b102cd886f
commit 2acfd21778

View File

@@ -229,6 +229,8 @@ const uploads = new Map();
// Routes
app.post('/upload/init', async (req, res) => {
const { filename, fileSize } = req.body;
const safeFilename = path.normalize(filename).replace(/^(\.\.(\/|\\|$))+/, '')
// Check file size limit
if (fileSize > maxFileSize) {
@@ -241,20 +243,20 @@ app.post('/upload/init', async (req, res) => {
}
const uploadId = Date.now().toString();
const filePath = path.join(uploadDir, filename);
const filePath = path.join(uploadDir, safeFilename);
try {
await ensureDirectoryExists(filePath);
uploads.set(uploadId, {
filename,
safeFilename,
filePath,
fileSize,
bytesReceived: 0,
writeStream: fs.createWriteStream(filePath)
});
log.info(`Initialized upload for ${filename} (${fileSize} bytes)`);
log.info(`Initialized upload for ${safeFilename} (${fileSize} bytes)`);
res.json({ uploadId });
} catch (err) {
log.error(`Failed to initialize upload: ${err.message}`);