svn commit: samba r23130 - in branches/SAMBA_3_0_RELEASE: . source/include source/libsmb

jerry at samba.org jerry at samba.org
Fri May 25 04:02:26 GMT 2007


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 <jmcd at us.ibm.com>
     * 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;
 	}
 



More information about the samba-cvs mailing list