[patch] for charconv in samba.HEAD

Ihar Viarheichyk i.viarheichyk at sam-solutions.net
Wed Dec 19 08:22:05 GMT 2001


The patch I posted before is not good. Here is another patch :)
I hope this approach is more correct.

-- 
Igor Vergeichik
ICQ 47298730

-------------- next part --------------
diff -ruNk.orig samba.HEAD/source/lib/charcnv.c.orig samba.HEAD/source/lib/charcnv.c
--- samba.HEAD/source/lib/charcnv.c.orig	Tue Dec 18 16:47:33 2001
+++ samba.HEAD/source/lib/charcnv.c	Wed Dec 19 18:05:58 2001
@@ -134,7 +134,7 @@
 				
 						
 		               break;
-		  case EILSEQ: reason="Illegal myltibyte sequence"; break;
+		  case EILSEQ: reason="Illegal multibyte sequence"; break;
 		}
 		DEBUG(0,("Conversion error: %s(%s)\n",reason,inbuf));
 		/* smb_panic(reason); */
diff -ruNk.orig samba.HEAD/source/libsmb/cliconnect.c.orig samba.HEAD/source/libsmb/cliconnect.c
--- samba.HEAD/source/libsmb/cliconnect.c.orig	Wed Dec 19 16:08:20 2001
+++ samba.HEAD/source/libsmb/cliconnect.c	Wed Dec 19 18:18:03 2001
@@ -366,15 +366,17 @@
 	cli->vuid = SVAL(cli->inbuf,smb_uid);
 	
 	p = smb_buf(cli->inbuf);
-
 	blob2 = data_blob(p, SVAL(cli->inbuf, smb_vwv3));
 
 	p += blob2.length;
-
 	p += clistr_pull(cli, cli->server_os, p, sizeof(fstring), -1, STR_TERMINATE);
-	p += clistr_pull(cli, cli->server_type, p, sizeof(fstring), -1, STR_TERMINATE);
-	p += clistr_pull(cli, cli->server_domain, p, sizeof(fstring), -1, STR_TERMINATE);
-
+	/* workaround for misaligned unicode string in windows packet */
+	p += clistr_pull(cli, cli->server_type, p, sizeof(fstring), strlen_w(p)*2+2, 0);
+	/* In broken package there is no 'Domain' field */
+	if(!SVAL(p,1)) {
+		p += 2;
+		p += clistr_pull(cli, cli->server_domain, p, sizeof(fstring), -1, STR_TERMINATE);
+	}
 	return blob2;
 }
 


More information about the samba-technical mailing list