improved error handling Modified: trunk/reactos/subsys/system/cacls/cacls.c Property changes on: trunk/reactos/subsys/system/cacls ___________________________________________________________________ Name: svn:ignore + *.o *.a *.d *.exe *.coff *.sym *.map GNUmakefile _____
Modified: trunk/reactos/subsys/system/cacls/cacls.c --- trunk/reactos/subsys/system/cacls/cacls.c 2006-01-14 16:08:57 UTC (rev 20853) +++ trunk/reactos/subsys/system/cacls/cacls.c 2006-01-14 16:18:45 UTC (rev 20854) @@ -19,7 +19,6 @@
#include <precomp.h>
- static GENERIC_MAPPING FileGenericMapping = { FILE_GENERIC_READ, @@ -28,6 +27,7 @@ FILE_ALL_ACCESS };
+ static INT LengthOfStrResource(IN HINSTANCE hInst, IN UINT uID) @@ -173,7 +173,7 @@ PSECURITY_DESCRIPTOR SecurityDescriptor; DWORD SDSize = 0; TCHAR FullFileName[MAX_PATH + 1]; - BOOL Ret = FALSE; + BOOL Error = FALSE, Ret = FALSE;
Indent = _tcslen(FilePath) + _tcslen(FileName); if (Indent++ > MAX_PATH - 1) @@ -250,16 +250,13 @@ { if (GetLastError() == ERROR_NONE_MAPPED) { - if (!ConvertSidToStringSid(Sid, - &SidString)) - { - break; - } + goto BuildSidString; } else { if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) { + Error = TRUE; break; }
@@ -269,6 +266,7 @@ if (Name == NULL) {
SetLastError(ERROR_NOT_ENOUGH_MEMORY); + Error = TRUE; break; }
@@ -285,10 +283,21 @@ HeapFree(GetProcessHeap(), 0, Name); - break; + Name = NULL; + goto BuildSidString; } } } + else + { +BuildSidString: + if (!ConvertSidToStringSid(Sid, + &SidString)) + { + Error = TRUE; + break; + } + }
/* print the file name or space */ _tprintf(_T("%s "), @@ -389,7 +398,8 @@ DWORD Access; UINT uID; } - AccessRights[] = { + AccessRights[] = + { {FILE_WRITE_ATTRIBUTES, IDS_FILE_WRITE_ATTRIBUTES}, {FILE_READ_ATTRIBUTES, IDS_FILE_READ_ATTRIBUTES}, {FILE_DELETE_CHILD, IDS_FILE_DELETE_CHILD}, @@ -467,7 +477,8 @@ AceIndex++; }
- Ret = TRUE; + if (!Error) + Ret = TRUE; } else { @@ -512,6 +523,7 @@ TCHAR *FilePart = NULL; WIN32_FIND_DATA FindData; HANDLE hFind; + DWORD LastError; BOOL ContinueAccessDenied = FALSE;
if (argc > 2) @@ -553,11 +565,15 @@ if (!PrintFileDacl(FullPath, FindData.cFileName)) { - if (GetLastError() == ERROR_ACCESS_DENIED && - !ContinueAccessDenied) + LastError = GetLastError(); + + if (LastError == ERROR_ACCESS_DENIED && + ContinueAccessDenied) { + PrintErrorMessage(LastError); + } + else break; - } } else _tprintf(_T("\n"));