Author: idra
Date: 2007-06-21 17:05:59 +0000 (Thu, 21 Jun 2007)
New Revision: 23571

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

Log:

Fix, parsing of multi byte share names.
Thanks to SATOH Fumiyasu
Fixes 4720

Jerry,
this is a showstopper for 3.0.25b, please grab it into
SAMBA_3_0_RELEASE before cuting the tarballs.

Simo.


Modified:
   branches/SAMBA_3_0/source/client/client.c
   branches/SAMBA_3_0_25/source/client/client.c
   branches/SAMBA_3_0_26/source/client/client.c


Changeset:
Modified: branches/SAMBA_3_0/source/client/client.c
===================================================================
--- branches/SAMBA_3_0/source/client/client.c   2007-06-21 15:41:19 UTC (rev 
23570)
+++ branches/SAMBA_3_0/source/client/client.c   2007-06-21 17:05:59 UTC (rev 
23571)
@@ -3970,14 +3970,6 @@
                /* if the service has not yet been specified lets see if it is 
available in the popt stack */
                if (!service_opt && poptPeekArg(pc)) {
                        pstrcpy(service, poptGetArg(pc));
-                       /* Convert any '/' characters in the service name to 
'\' characters */
-                       string_replace(service, '/','\\');
-
-                       if (count_chars(service,'\\') < 3) {
-                               d_printf("\n%s: Not enough '\\' characters in 
service\n",service);
-                               poptPrintUsage(pc, stderr, 0);
-                               exit(1);
-                       }
                        service_opt = True;
                }
 
@@ -4065,14 +4057,6 @@
        /* if the service has not yet been specified lets see if it is 
available in the popt stack */
        if (!service_opt && poptPeekArg(pc)) {
                pstrcpy(service, poptGetArg(pc));
-               /* Convert any '/' characters in the service name to '\' 
characters */
-               string_replace(service, '/','\\');
-
-               if (count_chars(service,'\\') < 3) {
-                       d_printf("\n%s: Not enough '\\' characters in 
service\n",service);
-                       poptPrintUsage(pc, stderr, 0);
-                       exit(1);
-               }
                service_opt = True;
        }
 
@@ -4111,6 +4095,16 @@
        }
        
        load_interfaces();
+
+       if (service_opt) {
+               /* Convert any '/' characters in the service name to '\' 
characters */
+               string_replace(service, '/','\\');
+               if (count_chars(service,'\\') < 3) {
+                       d_printf("\n%s: Not enough '\\' characters in 
service\n",service);
+                       poptPrintUsage(pc, stderr, 0);
+                       exit(1);
+               }
+       }
        
        if ( strlen(new_workgroup) != 0 )
                set_global_myworkgroup( new_workgroup );

Modified: branches/SAMBA_3_0_25/source/client/client.c
===================================================================
--- branches/SAMBA_3_0_25/source/client/client.c        2007-06-21 15:41:19 UTC 
(rev 23570)
+++ branches/SAMBA_3_0_25/source/client/client.c        2007-06-21 17:05:59 UTC 
(rev 23571)
@@ -3921,14 +3921,6 @@
                /* if the service has not yet been specified lets see if it is 
available in the popt stack */
                if (!service_opt && poptPeekArg(pc)) {
                        pstrcpy(service, poptGetArg(pc));
-                       /* Convert any '/' characters in the service name to 
'\' characters */
-                       string_replace(service, '/','\\');
-
-                       if (count_chars(service,'\\') < 3) {
-                               d_printf("\n%s: Not enough '\\' characters in 
service\n",service);
-                               poptPrintUsage(pc, stderr, 0);
-                               exit(1);
-                       }
                        service_opt = True;
                }
 
@@ -4016,14 +4008,6 @@
        /* if the service has not yet been specified lets see if it is 
available in the popt stack */
        if (!service_opt && poptPeekArg(pc)) {
                pstrcpy(service, poptGetArg(pc));
-               /* Convert any '/' characters in the service name to '\' 
characters */
-               string_replace(service, '/','\\');
-
-               if (count_chars(service,'\\') < 3) {
-                       d_printf("\n%s: Not enough '\\' characters in 
service\n",service);
-                       poptPrintUsage(pc, stderr, 0);
-                       exit(1);
-               }
                service_opt = True;
        }
 
@@ -4062,6 +4046,16 @@
        }
        
        load_interfaces();
+
+       if (service_opt) {
+               /* Convert any '/' characters in the service name to '\' 
characters */
+               string_replace(service, '/','\\');
+               if (count_chars(service,'\\') < 3) {
+                       d_printf("\n%s: Not enough '\\' characters in 
service\n",service);
+                       poptPrintUsage(pc, stderr, 0);
+                       exit(1);
+               }
+       }
        
        if ( strlen(new_workgroup) != 0 )
                set_global_myworkgroup( new_workgroup );

Modified: branches/SAMBA_3_0_26/source/client/client.c
===================================================================
--- branches/SAMBA_3_0_26/source/client/client.c        2007-06-21 15:41:19 UTC 
(rev 23570)
+++ branches/SAMBA_3_0_26/source/client/client.c        2007-06-21 17:05:59 UTC 
(rev 23571)
@@ -3921,14 +3921,6 @@
                /* if the service has not yet been specified lets see if it is 
available in the popt stack */
                if (!service_opt && poptPeekArg(pc)) {
                        pstrcpy(service, poptGetArg(pc));
-                       /* Convert any '/' characters in the service name to 
'\' characters */
-                       string_replace(service, '/','\\');
-
-                       if (count_chars(service,'\\') < 3) {
-                               d_printf("\n%s: Not enough '\\' characters in 
service\n",service);
-                               poptPrintUsage(pc, stderr, 0);
-                               exit(1);
-                       }
                        service_opt = True;
                }
 
@@ -4016,14 +4008,6 @@
        /* if the service has not yet been specified lets see if it is 
available in the popt stack */
        if (!service_opt && poptPeekArg(pc)) {
                pstrcpy(service, poptGetArg(pc));
-               /* Convert any '/' characters in the service name to '\' 
characters */
-               string_replace(service, '/','\\');
-
-               if (count_chars(service,'\\') < 3) {
-                       d_printf("\n%s: Not enough '\\' characters in 
service\n",service);
-                       poptPrintUsage(pc, stderr, 0);
-                       exit(1);
-               }
                service_opt = True;
        }
 
@@ -4062,6 +4046,16 @@
        }
        
        load_interfaces();
+
+       if (service_opt) {
+               /* Convert any '/' characters in the service name to '\' 
characters */
+               string_replace(service, '/','\\');
+               if (count_chars(service,'\\') < 3) {
+                       d_printf("\n%s: Not enough '\\' characters in 
service\n",service);
+                       poptPrintUsage(pc, stderr, 0);
+                       exit(1);
+               }
+       }
        
        if ( strlen(new_workgroup) != 0 )
                set_global_myworkgroup( new_workgroup );

Reply via email to