From 56bed670461db0bd7ccbb4315b7b6b0c4e418dab Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Fri, 2 Mar 2012 17:20:11 +0000 Subject: [PATCH] * flock.cc (allow_others_to_sync): Reorder conditional expression to check for DACL presence first, since otherwise dacl pointer value is undefined. Add comment. --- winsup/cygwin/ChangeLog | 6 ++++++ winsup/cygwin/flock.cc | 12 ++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index c6273aa33..53a003a95 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,9 @@ +2012-03-02 Corinna Vinschen + + * flock.cc (allow_others_to_sync): Reorder conditional expression to + check for DACL presence first, since otherwise dacl pointer value is + undefined. Add comment. + 2012-03-02 Corinna Vinschen * flock.cc (allow_others_to_sync): Use RtlGetDaclSecurityDescriptor diff --git a/winsup/cygwin/flock.cc b/winsup/cygwin/flock.cc index c66891a35..176e4869e 100644 --- a/winsup/cygwin/flock.cc +++ b/winsup/cygwin/flock.cc @@ -178,16 +178,16 @@ allow_others_to_sync () is in self-relative format. */ BOOLEAN present, defaulted; RtlGetDaclSecurityDescriptor (sd, &present, &dacl, &defaulted); - if (dacl == NULL) /* Everyone has all access anyway */ - { - done = true; - return; - } - else if (!present) + if (!present) /* If so, dacl has undefined value. */ { dacl = (PACL) (sd + 1); RtlCreateAcl (dacl, MAX_PROCESS_SD_SIZE - sizeof *sd, ACL_REVISION); } + else if (dacl == NULL) /* Everyone has all access anyway */ + { + done = true; + return; + } else { dacl->AclSize = MAX_PROCESS_SD_SIZE - ((PBYTE) dacl - (PBYTE) sd);