From: Jeffrey Altman Date: Wed, 19 Nov 2008 12:36:56 +0000 (+0000) Subject: DEVEL15-windows-smb-is-mask-20081119 X-Git-Tag: openafs-devel-1_5_56~56 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=e34b2ce89377b10dfde0f6ef3956ebfb5037dbad;p=packages%2Fo%2Fopenafs.git DEVEL15-windows-smb-is-mask-20081119 LICENSE MIT FIXES 123680 Examination of dump shows that smb_IsMask is being called on a non-8.3 input buffer. Separate smb_IsMask() into smb_Is8Dot3Mask() for 8.3 input buffers and smb_IsMask() for non-8.3 input buffers. (cherry picked from commit f3384d6378173dbaf550283851a8948654af548c) --- diff --git a/src/WINNT/afsd/smb.c b/src/WINNT/afsd/smb.c index 66899e3c7..2b5526afc 100644 --- a/src/WINNT/afsd/smb.c +++ b/src/WINNT/afsd/smb.c @@ -914,7 +914,7 @@ smb_vc_t *smb_FindVC(unsigned short lsn, int flags, int lana) return vcp; } -int smb_IsStarMask(clientchar_t *maskp) +static int smb_Is8Dot3StarMask(clientchar_t *maskp) { int i; clientchar_t tc; @@ -927,6 +927,19 @@ int smb_IsStarMask(clientchar_t *maskp) return 0; } +static int smb_IsStarMask(clientchar_t *maskp) +{ + int i; + clientchar_t tc; + + while (*maskp) { + tc = *maskp++; + if (tc == _C('?') || tc == _C('*') || tc == _C('>')) + return 1; + } + return 0; +} + #ifdef DEBUG_SMB_REFCOUNT void smb_ReleaseVCInternalDbg(smb_vc_t *vcp, char * file, long line) #define smb_ReleaseVCInternal(a) smb_ReleaseVCInternalDbg(a, file, line) @@ -4566,7 +4579,7 @@ long smb_ReceiveCoreSearchDir(smb_vc_t *vcp, smb_packet_t *inp, smb_packet_t *ou memcpy(dsp->mask, mask, 12); /* track if this is likely to match a lot of entries */ - if (smb_IsStarMask(mask)) + if (smb_Is8Dot3StarMask(mask)) starPattern = 1; else starPattern = 0;