diff --git a/lua/advdupe2/cl_file.lua b/lua/advdupe2/cl_file.lua index fbfb36d..a6716e5 100644 --- a/lua/advdupe2/cl_file.lua +++ b/lua/advdupe2/cl_file.lua @@ -1,3 +1,13 @@ +local invalidCharacters = { "\"", ":"} +function AdvDupe2.SanitizeFilename(filename) + for i=1, #invalidCharacters do + filename = string.gsub(filename, invalidCharacters[i], "_") + end + filename = string.gsub(filename, "%s+", " ") + + return filename +end + local function AdvDupe2_ReceiveFile(len, ply) local AutoSave = net.ReadUInt(8) == 1 @@ -18,6 +28,7 @@ local function AdvDupe2_ReceiveFile(len, ply) path = AdvDupe2.GetFilename(AdvDupe2.SavePath) end + path = AdvDupe2.SanitizeFilename(path) local dupefile = file.Open(path, "wb", "DATA") if(!dupefile)then AdvDupe2.Notify("File was not saved!",NOTIFY_ERROR,5) diff --git a/lua/advdupe2/file_browser.lua b/lua/advdupe2/file_browser.lua index f68c9cf..6f42282 100644 --- a/lua/advdupe2/file_browser.lua +++ b/lua/advdupe2/file_browser.lua @@ -306,6 +306,8 @@ local function RenameFileCl(node, name) AdvDupe2.Notify("Rename limit exceeded, could not rename.", NOTIFY_ERROR) return end + + FilePath = AdvDupe2.SanitizeFilename(FilePath) file.Write(FilePath, File) if (file.Exists(FilePath, "DATA")) then file.Delete(tempFilePath .. ".txt") diff --git a/lua/advdupe2/sh_codec.lua b/lua/advdupe2/sh_codec.lua index 0fe621f..438f31c 100644 --- a/lua/advdupe2/sh_codec.lua +++ b/lua/advdupe2/sh_codec.lua @@ -524,6 +524,8 @@ if CLIENT then local readFileName = "advdupe2/"..arg[1] local writeFileName = "advdupe2/"..string.StripExtension(arg[1])..".json" + writeFileName = AdvDupe2.SanitizeFilename(writeFileName) + local readFile = file.Open(readFileName, "rb", "DATA") if not readFile then print("File could not be read or found! ("..readFileName..")") return end local readData = readFile:Read(readFile:Size())