multipartBodyParser crash if mapping files array
- [ ] Used appropriate template for the issue type
- [ ] Searched both open and closed issues for duplicates of this issue
- [ ] Title adequately and concisely reflects the feature or the bug
Bug Report
Restify Version
8.5.1
Node.js Version
v10.15.1
Expected behaviour
No crash
Actual behaviour
Crash stack:
NodeError: The "path" argument must be one of type string, Buffer, or URL. Received type undefined
at Object.readFile (fs.js:297:3)
at forEach (/Users/guoyi/git/testServer/node_modules/restify/lib/plugins/multipartBodyParser.js:120:28)
at Array.forEach (
Repro case
server side:
const restify = require('restify');
const server = restify.createServer({ name: 'Test Server', maxParamLength: 1024, });
server.use(restify.plugins.queryParser({ mapParams: false })); server.use(restify.plugins.bodyParser({ mapParams: true, mapFiles: true, multiples: true, }));
server.post("/files/upload", async (request, response) => { return response.status(200).send(requst.url); });
server.listen(3000, () => console.log(Server started on port 3000));
client side:
async function addAttachment(folder, files) {
const url = http://localhost:3000/files/upload;
const headers = { host: hostname, 'contentType': 'multipart/form-data', };
const formData = { folder, files: files.map((file) => fs.createReadStream(file)), };
return new Promise((resolve, reject) => { request.post({ url, headers, formData, }, (err, httpResponse, body) => { if (err) { return reject(err); } if (httpResponse.statusCode === 200){ return resolve(body); } return reject(new Error('Unkown error')); }); }); }
Cause
https://github.com/restify/node-restify/blob/master/lib/plugins/multipartBodyParser.js line 120, not check array
Are you willing and able to fix this?
No