diff --git a/reactos/base/shell/cmd/copy.c b/reactos/base/shell/cmd/copy.c index e39bcde2e5f..c558a4f673f 100644 --- a/reactos/base/shell/cmd/copy.c +++ b/reactos/base/shell/cmd/copy.c @@ -377,11 +377,15 @@ INT cmd_copy(LPTSTR param) if (size > 512) { + TCHAR *old_evar = evar; evar = cmd_realloc(evar,size * sizeof(TCHAR) ); if (evar!=NULL) size = GetEnvironmentVariable (_T("COPYCMD"), evar, size); else + { size=0; + evar = old_evar; + } } /* check see if we did get any env variable */ diff --git a/reactos/base/shell/cmd/filecomp.c b/reactos/base/shell/cmd/filecomp.c index 0243d1d5068..4015dcf43b4 100644 --- a/reactos/base/shell/cmd/filecomp.c +++ b/reactos/base/shell/cmd/filecomp.c @@ -666,6 +666,8 @@ VOID CompleteFilename (LPTSTR strIN, BOOL bNext, LPTSTR strOut, UINT cusor) /* aseemble a list of all files names */ do { + FileName * oldFileList = FileList; + if(!_tcscmp (file.cFileName, _T(".")) || !_tcscmp (file.cFileName, _T(".."))) continue; @@ -683,6 +685,8 @@ VOID CompleteFilename (LPTSTR strIN, BOOL bNext, LPTSTR strOut, UINT cusor) if(FileList == NULL) { + /* Don't leak old buffer */ + cmd_free(oldFileList); /* Assemble the orginal string and return */ _tcscpy(strOut,szOrginal); FindClose(hFile);