diff options
-rw-r--r-- | source3/lib/util.c | 2 | ||||
-rw-r--r-- | source3/libsmb/clientgen.c | 2 | ||||
-rw-r--r-- | source3/libsmb/nmblib.c | 2 | ||||
-rw-r--r-- | source3/smbwrapper/smbw.c | 12 |
4 files changed, 12 insertions, 6 deletions
diff --git a/source3/lib/util.c b/source3/lib/util.c index ccbaebf4ea..c36eb8a667 100644 --- a/source3/lib/util.c +++ b/source3/lib/util.c @@ -500,7 +500,7 @@ int name_mangle( char *In, char *Out, char name_type ) /* Safely copy the input string, In, into buf[]. */ (void)memset( buf, 0, 20 ); - if( '*' == In[0] ) + if (strcmp(In,"*") == 0) buf[0] = '*'; else (void)slprintf( buf, sizeof(buf) - 1, "%-15.15s%c", In, name_type ); diff --git a/source3/libsmb/clientgen.c b/source3/libsmb/clientgen.c index e4aa15c6eb..20c0c36166 100644 --- a/source3/libsmb/clientgen.c +++ b/source3/libsmb/clientgen.c @@ -2134,7 +2134,7 @@ BOOL cli_negprot(struct cli_state *cli) send a session request. see rfc1002.txt 4.3 and 4.3.2 ****************************************************************************/ BOOL cli_session_request(struct cli_state *cli, - struct nmb_name *calling, struct nmb_name *called) + struct nmb_name *calling, struct nmb_name *called) { char *p; int len = 4; diff --git a/source3/libsmb/nmblib.c b/source3/libsmb/nmblib.c index d08003133f..87f483e9fd 100644 --- a/source3/libsmb/nmblib.c +++ b/source3/libsmb/nmblib.c @@ -248,7 +248,7 @@ static int put_nmb_name(char *buf,int offset,struct nmb_name *name) fstring buf1; char *p; - if (name->name[0] == '*') { + if (strcmp(name->name,"*") == 0) { /* special case for wildcard name */ bzero(buf1,20); buf1[0] = '*'; diff --git a/source3/smbwrapper/smbw.c b/source3/smbwrapper/smbw.c index 0abe823e29..054b694c41 100644 --- a/source3/smbwrapper/smbw.c +++ b/source3/smbwrapper/smbw.c @@ -360,21 +360,27 @@ struct smbw_server *smbw_server(char *server, char *share) return NULL; } + make_nmb_name(&calling, global_myname, 0x0, ""); + make_nmb_name(&called , server, 0x20, ""); + + again: /* have to open a new connection */ if (!cli_initialise(&c) || !cli_connect(&c, server, NULL)) { errno = ENOENT; return NULL; } - make_nmb_name(&calling, global_myname, 0x0, ""); - make_nmb_name(&called , server, 0x20, ""); - if (!cli_session_request(&c, &calling, &called)) { cli_shutdown(&c); + if (strcmp(called.name, "*SMBSERVER")) { + make_nmb_name(&called , "*SMBSERVER", 0x20, ""); + goto again; + } errno = ENOENT; return NULL; } + if (!cli_negprot(&c)) { cli_shutdown(&c); errno = ENOENT; |