OSDN Git Service

* sec_acl.cc (getacl): Avoid compiler warning.
authorcorinna <corinna>
Wed, 14 Apr 2004 20:16:27 +0000 (20:16 +0000)
committercorinna <corinna>
Wed, 14 Apr 2004 20:16:27 +0000 (20:16 +0000)
* security.cc (write_sd): Ditto.  Fix error handling.

winsup/cygwin/ChangeLog
winsup/cygwin/sec_acl.cc
winsup/cygwin/security.cc

index da65272..ef11031 100644 (file)
@@ -1,5 +1,10 @@
 2004-04-14  Corinna Vinschen  <corinna@vinschen.de>
 
+       * sec_acl.cc (getacl): Avoid compiler warning.
+       * security.cc (write_sd): Ditto.  Fix error handling.
+
+2004-04-14  Corinna Vinschen  <corinna@vinschen.de>
+
        * syscalls.cc (fstat64): Use get_namehash instead of hash_path_name.
 
 2004-04-14  Corinna Vinschen  <corinna@vinschen.de>
index e5e0589..ed1446e 100644 (file)
@@ -261,12 +261,11 @@ getacl (HANDLE handle, const char *file, DWORD attr, int nentries,
 {
   security_descriptor sd;
 
-  int ret;
   if (!handle || get_nt_object_security (handle, SE_FILE_OBJECT, sd)
-      && (ret = read_sd (file, sd)) <= 0)
+      && read_sd (file, sd) <= 0)
     {
       debug_printf ("read_sd %E");
-      return ret;
+      return -1;
     }
 
   cygpsid owner_sid;
index c0ad954..2395051 100644 (file)
@@ -1148,8 +1148,9 @@ write_sd (HANDLE fh, const char *file, security_descriptor &sd)
          return -1;
        }
     }
-  NTSTATUS ret;
+  NTSTATUS ret = STATUS_SUCCESS;
   int retry = 0;
+  res = -1;
   for (; retry < 2; ++retry)
     {
       if (retry && (fh = CreateFile (file, WRITE_OWNER | WRITE_DAC,
@@ -1168,12 +1169,13 @@ write_sd (HANDLE fh, const char *file, security_descriptor &sd)
     }
   if (retry && fh != INVALID_HANDLE_VALUE)
     CloseHandle (fh);
-  if (ret != STATUS_SUCCESS)
-    {
-      __seterrno_from_win_error (RtlNtStatusToDosError (ret));
-      return -1;
-    }
-  return 0;
+  if (fh == INVALID_HANDLE_VALUE)      /* CreateFile failed */
+    __seterrno ();
+  else if (ret != STATUS_SUCCESS)      /* NtSetSecurityObject failed */
+    __seterrno_from_win_error (RtlNtStatusToDosError (ret));
+  else                                 /* Everything's fine. */
+    res = 0;
+  return res;
 }
 
 static void