diff --git a/src/js/fileHandler.js b/src/js/fileHandler.js
index 48e0508..cc9f02a 100644
--- a/src/js/fileHandler.js
+++ b/src/js/fileHandler.js
@@ -27,6 +27,7 @@ export default class FileHandler {
confirmTransfer(event) {
const validFileTypes = ['png','jpg','jpeg','gif','zip','rar','gzip','pdf','txt','json','doc','docx'];
const file = event.target.files && event.target.files[0];
+ const fileName = this.sanitizeFileName(file.name);
if (file) {
const fileExt = file.name.split('.').pop().toLowerCase();
@@ -38,16 +39,16 @@ export default class FileHandler {
// Support for only 1MB
if (file.size > 1000000) {
- console.log(file);
alert('Max filesize is 1MB.');
return false;
}
let fileId = uuid.v4();
- let confirmMessage = 'You are about to send ' + file.name + ' to all participants in this chat. Confirm | Cancel';
+ let confirmMessage = 'You are about to send ' + fileName + ' to all participants in this chat. Confirm | Cancel';
let fileData = {
id: fileId,
- file: file
+ file: file,
+ fileName: fileName
};
this.localFileQueue.push(fileData);
this.chat.addChatMessage({
@@ -78,10 +79,10 @@ export default class FileHandler {
const base64 = window.btoa(readerEvent.target.result);
const additionalData = {
fileId: fileId,
- fileName: file.name
+ fileName: this.sanitizeFileName(file.name)
};
this.darkwire.encodeMessage(base64, fileType, additionalData).then((socketData) => {
- this.chat.replaceMessage('#transfer-' + fileId, 'Sent ' + file.name + '');
+ this.chat.replaceMessage('#transfer-' + fileId, 'Sent ' + additionalData.fileName + '');
this.socket.emit('new message', socketData);
});
this.resetInput();
@@ -94,7 +95,7 @@ export default class FileHandler {
const file = _.findWhere(this.localFileQueue, {id: fileId});
this.localFileQueue = _.without(this.localFileQueue, file);
this.resetInput();
- return this.chat.replaceMessage('#transfer-' + fileId, 'The file transfer for ' + file.file.name + ' has been canceled.');
+ return this.chat.replaceMessage('#transfer-' + fileId, 'The file transfer for ' + file.fileName + ' has been canceled.');
}
createBlob(base64, fileType) {
@@ -125,6 +126,10 @@ export default class FileHandler {
return window.URL.createObjectURL(blob);
}
+ sanitizeFileName(str) {
+ return str.replace(/[<>]/ig, '');
+ }
+
listen() {
// browser API
document.getElementById('fileInput').addEventListener('change', this.confirmTransfer.bind(this), false);