From: Tommie Gannert Date: Sun, 30 Apr 2006 06:00:31 +0000 (+0000) Subject: STABLE14-windows-ansi-filenames-fix-20060430 X-Git-Tag: openafs-stable-1_4_1b~15 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=9353675a54adedd7b60f9875352dff55c246981a;p=packages%2Fo%2Fopenafs.git 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) --- 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) {