From 526a1b01eeceb2ef74a681476afc728b73491c35 Mon Sep 17 00:00:00 2001 From: Peter Veenstra Date: Mon, 14 Dec 2009 18:52:34 +0000 Subject: [PATCH] Add 0xbd to allow table. Fixes offensive (ripsaw). Add some code to prevent stack corruption on long paths Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3515 --- src/dos/dos_files.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/dos/dos_files.cpp b/src/dos/dos_files.cpp index 875a189b..867c74e5 100644 --- a/src/dos/dos_files.cpp +++ b/src/dos/dos_files.cpp @@ -93,7 +93,7 @@ bool DOS_MakeName(char const * const name,char * const fullname,Bit8u * drive) { case '!': case '%': case '{': case '}': case '`': case '~': case '_': case '-': case '.': case '*': case '?': case '&': case '\'': case '+': case '^': case 246: case 255: case 0xa0: - case 0xe5: + case 0xe5: case 0xbd: upname[w++]=c; break; default: @@ -175,6 +175,11 @@ bool DOS_MakeName(char const * const name,char * const fullname,Bit8u * drive) { ext[4] = 0; if((strlen(tempdir) - strlen(ext)) > 8) memmove(tempdir + 8, ext, 5); } else tempdir[8]=0; + + if (strlen(fullname)+strlen(tempdir)>=DOS_PATHLENGTH) { + DOS_SetError(DOSERR_PATH_NOT_FOUND);return false; + } + strcat(fullname,tempdir); tempdir[0]=0; w=0;r++;