From f3384d6378173dbaf550283851a8948654af548c Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Wed, 19 Nov 2008 12:36:39 +0000 Subject: [PATCH] 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. --- src/WINNT/afsd/smb.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/WINNT/afsd/smb.c b/src/WINNT/afsd/smb.c index bda90ba57..1aa85a500 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; -- 2.39.5