Skip to content
Snippets Groups Projects
Unverified Commit 0b7bf68f authored by Sean Hatfield's avatar Sean Hatfield Committed by GitHub
Browse files

Normalize paths on files uploaded to prevent arbitrary file writes (#2905)


* normalize paths on files uploaded to prevent arbitrary file writes

* force normalize path in string parse

---------

Co-authored-by: default avatartimothycarambat <rambat1010@gmail.com>
parent 99b6dedc
No related branches found
No related tags found
No related merge requests found
......@@ -2,6 +2,7 @@ const multer = require("multer");
const path = require("path");
const fs = require("fs");
const { v4 } = require("uuid");
const { normalizePath } = require(".");
/**
* Handle File uploads for auto-uploading.
......@@ -16,8 +17,8 @@ const fileUploadStorage = multer.diskStorage({
cb(null, uploadOutput);
},
filename: function (_, file, cb) {
file.originalname = Buffer.from(file.originalname, "latin1").toString(
"utf8"
file.originalname = normalizePath(
Buffer.from(file.originalname, "latin1").toString("utf8")
);
cb(null, file.originalname);
},
......@@ -36,6 +37,7 @@ const fileAPIUploadStorage = multer.diskStorage({
cb(null, uploadOutput);
},
filename: function (_, file, cb) {
file.originalname = normalizePath(file.originalname);
cb(null, file.originalname);
},
});
......@@ -51,8 +53,8 @@ const assetUploadStorage = multer.diskStorage({
return cb(null, uploadOutput);
},
filename: function (_, file, cb) {
file.originalname = Buffer.from(file.originalname, "latin1").toString(
"utf8"
file.originalname = normalizePath(
Buffer.from(file.originalname, "latin1").toString("utf8")
);
cb(null, file.originalname);
},
......@@ -71,7 +73,9 @@ const pfpUploadStorage = multer.diskStorage({
return cb(null, uploadOutput);
},
filename: function (req, file, cb) {
const randomFileName = `${v4()}${path.extname(file.originalname)}`;
const randomFileName = `${v4()}${path.extname(
normalizePath(file.originalname)
)}`;
req.randomFileName = randomFileName;
cb(null, randomFileName);
},
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment