From 02d09e03eb27f3a2dc299de704e45dae5173f43f Mon Sep 17 00:00:00 2001 From: Gordon Ross Date: Wed, 16 Dec 2009 15:03:38 -0500 Subject: 6650611 Attribute cache logic needs improvement 6876185 common I/F for net message build/parse in kernel vs user code 6891728 syslog shows: smbfs_close: error 9 closing /dirname 6906037 smbfs_mount() doesn't ASSERT the return value of smbfs_make_node() 6607536 the size of a dir on smbfs is not correct 6648146 smbfs should implement reclaim from node cache --HG-- rename : usr/src/lib/libsmbfs/smb/acl_conv.c => usr/src/common/smbclnt/smbfs_ntacl.c rename : usr/src/lib/libsmbfs/smb/acl_nt.h => usr/src/common/smbclnt/smbfs_ntacl.h --- usr/src/lib/libsmbfs/smb/ntlm.c | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) (limited to 'usr/src/lib/libsmbfs/smb/ntlm.c') diff --git a/usr/src/lib/libsmbfs/smb/ntlm.c b/usr/src/lib/libsmbfs/smb/ntlm.c index 8119e62b65..ffd9ff3d41 100644 --- a/usr/src/lib/libsmbfs/smb/ntlm.c +++ b/usr/src/lib/libsmbfs/smb/ntlm.c @@ -187,11 +187,11 @@ ntlm_put_v1_responses(struct smb_ctx *ctx, int err; /* Get mbuf chain for the LM response. */ - if ((err = mb_init(lm_mbp, NTLM_V1_RESP_SZ)) != 0) + if ((err = mb_init_sz(lm_mbp, NTLM_V1_RESP_SZ)) != 0) return (err); /* Get mbuf chain for the NT response. */ - if ((err = mb_init(nt_mbp, NTLM_V1_RESP_SZ)) != 0) + if ((err = mb_init_sz(nt_mbp, NTLM_V1_RESP_SZ)) != 0) return (err); /* @@ -199,7 +199,9 @@ ntlm_put_v1_responses(struct smb_ctx *ctx, * from the challenge and the ASCII * password (if authflags allow). */ - mb_fit(lm_mbp, NTLM_V1_RESP_SZ, (char **)&lmresp); + err = mb_fit(lm_mbp, NTLM_V1_RESP_SZ, (char **)&lmresp); + if (err) + return (err); bzero(lmresp, NTLM_V1_RESP_SZ); if (ctx->ct_authflags & SMB_AT_LM1) { /* They asked to send the LM hash too. */ @@ -213,7 +215,9 @@ ntlm_put_v1_responses(struct smb_ctx *ctx, * Compute the NTLM response, derived from * the challenge and the NT hash. */ - mb_fit(nt_mbp, NTLM_V1_RESP_SZ, (char **)&ntresp); + err = mb_fit(nt_mbp, NTLM_V1_RESP_SZ, (char **)&ntresp); + if (err) + return (err); bzero(ntresp, NTLM_V1_RESP_SZ); err = ntlm_v1_response(ntresp, ctx->ct_nthash, ctx->ct_ntlm_chal, NTLM_CHAL_SZ); @@ -408,9 +412,9 @@ ntlm_put_v2_responses(struct smb_ctx *ctx, struct mbdata *ti_mbp, uchar_t v2hash[NTLM_HASH_SZ]; struct mbuf *tim = ti_mbp->mb_top; - if ((err = mb_init(lm_mbp, M_MINSIZE)) != 0) + if ((err = mb_init(lm_mbp)) != 0) return (err); - if ((err = mb_init(nt_mbp, M_MINSIZE)) != 0) + if ((err = mb_init(nt_mbp)) != 0) return (err); /* @@ -443,13 +447,13 @@ ntlm_put_v2_responses(struct smb_ctx *ctx, struct mbdata *ti_mbp, * 2: Client nonce */ lmresp = (uchar_t *)lm_mbp->mb_pos; - mb_put_mem(lm_mbp, NULL, NTLM_HASH_SZ); + mb_put_mem(lm_mbp, NULL, NTLM_HASH_SZ, MB_MSYSTEM); err = ntlm_v2_resp_hash(lmresp, v2hash, ctx->ct_ntlm_chal, ctx->ct_clnonce, NTLM_CHAL_SZ); if (err) goto out; - mb_put_mem(lm_mbp, ctx->ct_clnonce, NTLM_CHAL_SZ); + mb_put_mem(lm_mbp, ctx->ct_clnonce, NTLM_CHAL_SZ, MB_MSYSTEM); /* * Compute the NTLMv2 response, derived @@ -461,13 +465,13 @@ ntlm_put_v2_responses(struct smb_ctx *ctx, struct mbdata *ti_mbp, * 2: "target info." blob */ ntresp = (uchar_t *)nt_mbp->mb_pos; - mb_put_mem(nt_mbp, NULL, NTLM_HASH_SZ); + mb_put_mem(nt_mbp, NULL, NTLM_HASH_SZ, MB_MSYSTEM); err = ntlm_v2_resp_hash(ntresp, v2hash, ctx->ct_ntlm_chal, (uchar_t *)tim->m_data, tim->m_len); if (err) goto out; - mb_put_mem(nt_mbp, tim->m_data, tim->m_len); + mb_put_mem(nt_mbp, tim->m_data, tim->m_len, MB_MSYSTEM); /* * Compute the session key @@ -506,7 +510,7 @@ smb_put_blob_name(struct mbdata *mbp, char *name, int type) mb_put_uint16le(mbp, type); mb_put_uint16le(mbp, nlen); - mb_put_mem(mbp, (char *)ucs, nlen); + mb_put_mem(mbp, (char *)ucs, nlen, MB_MSYSTEM); if (ucs) free(ucs); @@ -528,7 +532,7 @@ ntlm_build_target_info(struct smb_ctx *ctx, struct mbuf *names, int err; /* Get mbuf chain for the "target info". */ - if ((err = mb_init(mbp, M_MINSIZE)) != 0) + if ((err = mb_init(mbp)) != 0) return (err); /* @@ -556,7 +560,7 @@ ntlm_build_target_info(struct smb_ctx *ctx, struct mbuf *names, mb_put_uint32le(mbp, 0x101); /* Blob signature */ mb_put_uint32le(mbp, 0); /* reserved */ mb_put_uint64le(mbp, nt_time); /* NT time stamp */ - mb_put_mem(mbp, ctx->ct_clnonce, NTLM_CHAL_SZ); + mb_put_mem(mbp, ctx->ct_clnonce, NTLM_CHAL_SZ, MB_MSYSTEM); mb_put_uint32le(mbp, 0); /* unknown */ /* @@ -564,7 +568,7 @@ ntlm_build_target_info(struct smb_ctx *ctx, struct mbuf *names, * NTLMSSP Type 2 message or composed here. */ if (names) { - err = mb_put_mem(mbp, names->m_data, names->m_len); + err = mb_put_mem(mbp, names->m_data, names->m_len, MB_MSYSTEM); } else { /* Get upper-case names. */ ucdom = utf8_str_toupper(ctx->ct_domain); -- cgit v1.2.3