Author: jelmer
Date: 2007-08-29 00:04:40 +0000 (Wed, 29 Aug 2007)
New Revision: 24757

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

Log:
Try parsing a UNC location before a DCE/RPC binding string as the latter now 
accepts strings not prefixed with a transport.

Modified:
   branches/SAMBA_4_0/
   branches/SAMBA_4_0/source/torture/smbtorture.c


Changeset:

Property changes on: branches/SAMBA_4_0
___________________________________________________________________
Name: bzr:revision-info
...skipped...
Name: bzr:revision-id:v3-trunk0
...skipped...

Modified: branches/SAMBA_4_0/source/torture/smbtorture.c
===================================================================
--- branches/SAMBA_4_0/source/torture/smbtorture.c      2007-08-28 22:49:43 UTC 
(rev 24756)
+++ branches/SAMBA_4_0/source/torture/smbtorture.c      2007-08-29 00:04:40 UTC 
(rev 24757)
@@ -481,6 +481,7 @@
        static const char *ui_ops_name = "simple";
        const char *basedir = NULL;
        static int list_tests = 0;
+       char *host = NULL, *share = NULL;
        enum {OPT_LOADFILE=1000,OPT_UNCLIST,OPT_TIMELIMIT,OPT_DNS, OPT_LIST,
              OPT_DANGEROUS,OPT_SMB_PORTS,OPT_ASYNC,OPT_NUMPROGS};
        
@@ -601,24 +602,19 @@
        }
 
        /* see if its a RPC transport specifier */
-       status = dcerpc_parse_binding(talloc_autofree_context(), argv_new[1], 
&binding_struct);
-       if (NT_STATUS_IS_OK(status)) {
+       if (!smbcli_parse_unc(argv_new[1], NULL, &host, &share)) {
+               status = dcerpc_parse_binding(talloc_autofree_context(), 
argv_new[1], &binding_struct);
+               if (NT_STATUS_IS_ERR(status)) {
+                       d_printf("Invalid option: %s is not a valid torture 
target (share or binding string)\n\n", argv_new[1]);
+                       usage(pc);
+                       return false;
+               }
                lp_set_cmdline("torture:host", binding_struct->host);
                lp_set_cmdline("torture:share", "IPC$");
                lp_set_cmdline("torture:binding", argv_new[1]);
        } else {
-               char *binding = NULL;
-               char *host = NULL, *share = NULL;
-
-               if (!smbcli_parse_unc(argv_new[1], NULL, &host, &share)) {
-                       d_printf("Invalid option: %s is not a valid torture 
target (share or binding string)\n\n", argv_new[1]);
-                       usage(pc);
-               }
-
                lp_set_cmdline("torture:host", host);
                lp_set_cmdline("torture:share", share);
-               asprintf(&binding, "ncacn_np:%s", host);
-               lp_set_cmdline("torture:binding", binding);
        }
 
        if (!strcmp(ui_ops_name, "simple")) {

Reply via email to