Author: jerry
Date: 2007-05-25 04:02:25 +0000 (Fri, 25 May 2007)
New Revision: 23130

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=23130

Log:
merge Derrell's change from SAMBA_3_0_25 svn r23120
Modified:
   branches/SAMBA_3_0_RELEASE/WHATSNEW.txt
   branches/SAMBA_3_0_RELEASE/source/include/nterr.h
   branches/SAMBA_3_0_RELEASE/source/libsmb/clierror.c
   branches/SAMBA_3_0_RELEASE/source/libsmb/clitrans.c


Changeset:
Modified: branches/SAMBA_3_0_RELEASE/WHATSNEW.txt
===================================================================
--- branches/SAMBA_3_0_RELEASE/WHATSNEW.txt     2007-05-24 23:38:46 UTC (rev 
23129)
+++ branches/SAMBA_3_0_RELEASE/WHATSNEW.txt     2007-05-25 04:02:25 UTC (rev 
23130)
@@ -98,8 +98,10 @@
     * BUG 4599: Fix failure when setting attributes.
     * BUG 4634: Type of the size parameter to getpeername in
       libsmbclient code was wrong.
+    * Fix libsmbclient interaction with links on Vista and properly
+      detect non-NTSTATUS errors.
+    
 
-
 o   Jim McDonough <[EMAIL PROTECTED]>
     * BUG 4630: Fix special case of unix_to_nt_time() for TIME_T_MAX
       and the output from http_timestring().

Modified: branches/SAMBA_3_0_RELEASE/source/include/nterr.h
===================================================================
--- branches/SAMBA_3_0_RELEASE/source/include/nterr.h   2007-05-24 23:38:46 UTC 
(rev 23129)
+++ branches/SAMBA_3_0_RELEASE/source/include/nterr.h   2007-05-25 04:02:25 UTC 
(rev 23130)
@@ -30,6 +30,9 @@
 #define STATUS_NO_MORE_FILES              NT_STATUS(0x80000006)
 #define NT_STATUS_NO_MORE_ENTRIES         NT_STATUS(0x8000001a)
 
+/* Vista Status codes. */
+#define STATUS_INACCESSIBLE_SYSTEM_SHORTCUT         NT_STATUS(0x8000002d)
+
 #define STATUS_MORE_ENTRIES               NT_STATUS(0x0105)
 #define STATUS_SOME_UNMAPPED              NT_STATUS(0x0107)
 #define ERROR_INVALID_PARAMETER                  NT_STATUS(0x0057)

Modified: branches/SAMBA_3_0_RELEASE/source/libsmb/clierror.c
===================================================================
--- branches/SAMBA_3_0_RELEASE/source/libsmb/clierror.c 2007-05-24 23:38:46 UTC 
(rev 23129)
+++ branches/SAMBA_3_0_RELEASE/source/libsmb/clierror.c 2007-05-25 04:02:25 UTC 
(rev 23130)
@@ -380,6 +380,15 @@
                return cli_errno_from_nt(status);
         }
 
+        /*
+         * Yuck!  A special case for this Vista error.  Since its high-order
+         * byte isn't 0xc0, it doesn't match cli_is_nt_error() above.
+         */
+        status = cli_nt_error(cli);
+        if (NT_STATUS_V(status) == 
NT_STATUS_V(STATUS_INACCESSIBLE_SYSTEM_SHORTCUT)) {
+            return EACCES;
+        }
+
        /* for other cases */
        return EINVAL;
 }

Modified: branches/SAMBA_3_0_RELEASE/source/libsmb/clitrans.c
===================================================================
--- branches/SAMBA_3_0_RELEASE/source/libsmb/clitrans.c 2007-05-24 23:38:46 UTC 
(rev 23129)
+++ branches/SAMBA_3_0_RELEASE/source/libsmb/clitrans.c 2007-05-25 04:02:25 UTC 
(rev 23130)
@@ -197,7 +197,9 @@
         */
        status = cli_nt_error(cli);
        
-       if (NT_STATUS_IS_ERR(status) || 
NT_STATUS_EQUAL(status,STATUS_NO_MORE_FILES)) {
+       if (NT_STATUS_IS_ERR(status) ||
+            NT_STATUS_EQUAL(status,STATUS_NO_MORE_FILES) ||
+            NT_STATUS_EQUAL(status,STATUS_INACCESSIBLE_SYSTEM_SHORTCUT)) {
                goto out;
        }
 

Reply via email to