From 9353675a54adedd7b60f9875352dff55c246981a Mon Sep 17 00:00:00 2001 From: Tommie Gannert Date: Sun, 30 Apr 2006 06:00:31 +0000 Subject: [PATCH] STABLE14-windows-ansi-filenames-fix-20060430 FIXES 31202 Remember to perform an OemToChar() conversion of the file name being queried in Trans2QueryFileInfo (cherry picked from commit 97a9d1964347e2b4b0f75e749b4d8f36d09fc876) --- src/WINNT/afsd/smb3.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/WINNT/afsd/smb3.c b/src/WINNT/afsd/smb3.c index 73ecdbb50..a7ede8ae9 100644 --- a/src/WINNT/afsd/smb3.c +++ b/src/WINNT/afsd/smb3.c @@ -2638,6 +2638,7 @@ long smb_ReceiveTran2QPathInfo(smb_vc_t *vcp, smb_tran2Packet_t *p, smb_packet_t cm_scache_t *scp, *dscp; long code = 0; char *op; + char *pathp; char *tidPathp; char *lastComp; cm_req_t req; @@ -2665,8 +2666,12 @@ long smb_ReceiveTran2QPathInfo(smb_vc_t *vcp, smb_tran2Packet_t *p, smb_packet_t smb_SendTran2Error(vcp, p, opx, CM_ERROR_INVAL); return 0; } + + pathp = (char *)(&p->parmsp[3]); + if (smb_StoreAnsiFilenames) + OemToChar(pathp,pathp); osi_Log2(smb_logp, "T2 QPathInfo type 0x%x path %s", infoLevel, - osi_LogSaveString(smb_logp, (char *)(&p->parmsp[3]))); + osi_LogSaveString(smb_logp, pathp)); outp = smb_GetTran2ResponsePacket(vcp, p, opx, 2, nbytesRequired); @@ -2717,8 +2722,7 @@ long smb_ReceiveTran2QPathInfo(smb_vc_t *vcp, smb_tran2Packet_t *p, smb_packet_t */ if (infoLevel == SMB_QUERY_FILE_BASIC_INFO) { spacep = cm_GetSpace(); - smb_StripLastComponent(spacep->data, &lastComp, - (char *)(&p->parmsp[3])); + smb_StripLastComponent(spacep->data, &lastComp, pathp); #ifndef SPECIAL_FOLDERS /* Make sure that lastComp is not NULL */ if (lastComp) { @@ -2763,7 +2767,7 @@ long smb_ReceiveTran2QPathInfo(smb_vc_t *vcp, smb_tran2Packet_t *p, smb_packet_t } /* now do namei and stat, and copy out the info */ - code = cm_NameI(cm_data.rootSCachep, (char *)(&p->parmsp[3]), + code = cm_NameI(cm_data.rootSCachep, pathp, CM_FLAG_FOLLOW | CM_FLAG_CASEFOLD, userp, tidPathp, &req, &scp); if (code) { @@ -2798,7 +2802,7 @@ long smb_ReceiveTran2QPathInfo(smb_vc_t *vcp, smb_tran2Packet_t *p, smb_packet_t op = outp->datap; /* for info level 108, figure out short name */ if (infoLevel == 0x108) { - code = cm_GetShortName((char *)(&p->parmsp[3]), userp, &req, + code = cm_GetShortName(pathp, userp, &req, tidPathp, scp->fid.vnode, shortName, (size_t *) &len); if (code) { -- 2.39.5