OSDN Git Service

* path.cc (path_conv::check): Only check for PC_NO_ACCESS_CHECK in end
authorcgf <cgf>
Mon, 4 Apr 2005 16:07:32 +0000 (16:07 +0000)
committercgf <cgf>
Mon, 4 Apr 2005 16:07:32 +0000 (16:07 +0000)
component.

winsup/cygwin/ChangeLog
winsup/cygwin/path.cc

index ef477c1..99a2389 100644 (file)
@@ -1,3 +1,8 @@
+2005-04-04  Christopher Faylor  <cgf@timesys.com>
+
+       * path.cc (path_conv::check): Only check for PC_NO_ACCESS_CHECK in end
+       component.
+
 2005-04-04  Corinna Vinschen  <corinna@vinschen.de>
 
        * dcrt0.cc (dll_crt0_1): Don't call set_cygwin_privileges on 9x.
index 688804a..b4bbe56 100644 (file)
@@ -556,7 +556,6 @@ path_conv::check (const char *src, unsigned opt,
     error = 0;
   else if ((error = check_null_empty_str (src)))
     return;
-  unsigned pflags_or = (opt & PC_NO_ACCESS_CHECK);
   /* This loop handles symlink expansion.  */
   for (;;)
     {
@@ -588,7 +587,8 @@ path_conv::check (const char *src, unsigned opt,
       sym.contents[0] = '\0';
 
       int symlen = 0;
-      for (;;)
+      
+      for (unsigned pflags_or = opt & PC_NO_ACCESS_CHECK; ; pflags_or = 0)
        {
          const suffix_info *suff;
          char pathbuf[CYG_MAX_PATH];
@@ -782,7 +782,7 @@ is_virtual_symlink:
                  else
                    break;
                }
-             else if (sym.error != ENOENT && sym.error != ENOSHARE)
+             else if (sym.error && sym.error != ENOENT && sym.error != ENOSHARE)
                {
                  error = sym.error;
                  goto out;