Changeset View
Changeset View
Standalone View
Standalone View
head/contrib/smbfs/lib/smb/ctx.c
Show First 20 Lines • Show All 543 Lines • ▼ Show 20 Lines | if (ctx->ct_srvaddr) { | ||||
error = nbns_resolvename(ssn->ioc_srvname, ctx->ct_nb, &sap); | error = nbns_resolvename(ssn->ioc_srvname, ctx->ct_nb, &sap); | ||||
} | } | ||||
if (error) { | if (error) { | ||||
smb_error("can't get server address", error); | smb_error("can't get server address", error); | ||||
return error; | return error; | ||||
} | } | ||||
nn.nn_scope = ctx->ct_nb->nb_scope; | nn.nn_scope = ctx->ct_nb->nb_scope; | ||||
nn.nn_type = NBT_SERVER; | nn.nn_type = NBT_SERVER; | ||||
strcpy(nn.nn_name, ssn->ioc_srvname); | if (strlen(ssn->ioc_srvname) > NB_NAMELEN) | ||||
return NBERROR(NBERR_NAMETOOLONG); | |||||
strlcpy(nn.nn_name, ssn->ioc_srvname, sizeof(nn.nn_name)); | |||||
error = nb_sockaddr(sap, &nn, &saserver); | error = nb_sockaddr(sap, &nn, &saserver); | ||||
nb_snbfree(sap); | nb_snbfree(sap); | ||||
if (error) { | if (error) { | ||||
smb_error("can't allocate server address", error); | smb_error("can't allocate server address", error); | ||||
return error; | return error; | ||||
} | } | ||||
ssn->ioc_server = (struct sockaddr*)saserver; | ssn->ioc_server = (struct sockaddr*)saserver; | ||||
if (ctx->ct_locname[0] == 0) { | if (ctx->ct_locname[0] == 0) { | ||||
error = nb_getlocalname(ctx->ct_locname); | error = nb_getlocalname(ctx->ct_locname); | ||||
if (error) { | if (error) { | ||||
smb_error("can't get local name", error); | smb_error("can't get local name", error); | ||||
return error; | return error; | ||||
} | } | ||||
nls_str_upper(ctx->ct_locname, ctx->ct_locname); | nls_str_upper(ctx->ct_locname, ctx->ct_locname); | ||||
} | } | ||||
strcpy(nn.nn_name, ctx->ct_locname); | /* | ||||
* Truncate the local host name to NB_NAMELEN-1 which gives a | |||||
* suffix of 0 which is "workstation name". | |||||
*/ | |||||
strlcpy(nn.nn_name, ctx->ct_locname, NB_NAMELEN); | |||||
nn.nn_type = NBT_WKSTA; | nn.nn_type = NBT_WKSTA; | ||||
nn.nn_scope = ctx->ct_nb->nb_scope; | nn.nn_scope = ctx->ct_nb->nb_scope; | ||||
error = nb_sockaddr(NULL, &nn, &salocal); | error = nb_sockaddr(NULL, &nn, &salocal); | ||||
if (error) { | if (error) { | ||||
nb_snbfree((struct sockaddr*)saserver); | nb_snbfree((struct sockaddr*)saserver); | ||||
smb_error("can't allocate local address", error); | smb_error("can't allocate local address", error); | ||||
return error; | return error; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 199 Lines • Show Last 20 Lines |