From: Jeffrey Altman Date: Mon, 28 Sep 2009 14:52:45 +0000 (+0200) Subject: Windows: Directories do not have a default stream X-Git-Tag: openafs-devel-1_5_65~16 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=50e98677ca5b62b3b82608c6da3e719956d3a03d;p=packages%2Fo%2Fopenafs.git Windows: Directories do not have a default stream When enumerating streams for objects, do not offer a default stream for directory objects (including mount points). LICENSE MIT Reviewed-on: http://gerrit.openafs.org/544 Reviewed-by: Derrick Brashear Tested-by: Jeffrey Altman Reviewed-by: Jeffrey Altman --- diff --git a/src/WINNT/afsd/smb3.c b/src/WINNT/afsd/smb3.c index 10231cdc8..afff9cf41 100644 --- a/src/WINNT/afsd/smb3.c +++ b/src/WINNT/afsd/smb3.c @@ -3811,13 +3811,21 @@ long smb_ReceiveTran2QFileInfo(smb_vc_t *vcp, smb_tran2Packet_t *p, smb_packet_t } else if (infoLevel == SMB_QUERY_FILE_STREAM_INFO) { size_t len = 0; - /* For now we have no streams */ - qfi.u.QFfileStreamInfo.nextEntryOffset = 0; - qfi.u.QFfileStreamInfo.streamSize = scp->length; - qfi.u.QFfileStreamInfo.streamAllocationSize = scp->length; - smb_UnparseString(opx, qfi.u.QFfileStreamInfo.fileName, L"::$DATA", &len, SMB_STRF_IGNORENUL); - qfi.u.QFfileStreamInfo.streamNameLength = len; - responseSize -= (sizeof(qfi.u.QFfileStreamInfo.fileName) - len); + + if (scp->fileType == CM_SCACHETYPE_DIRECTORY || + scp->fileType == CM_SCACHETYPE_MOUNTPOINT || + scp->fileType == CM_SCACHETYPE_INVALID) { + /* Do not return the alternate streams for directories */ + responseSize = 0; + } else { + /* For now we have no alternate streams */ + qfi.u.QFfileStreamInfo.nextEntryOffset = 0; + qfi.u.QFfileStreamInfo.streamSize = scp->length; + qfi.u.QFfileStreamInfo.streamAllocationSize = scp->length; + smb_UnparseString(opx, qfi.u.QFfileStreamInfo.fileName, L"::$DATA", &len, SMB_STRF_IGNORENUL); + qfi.u.QFfileStreamInfo.streamNameLength = len; + responseSize -= (sizeof(qfi.u.QFfileStreamInfo.fileName) - len); + } } outp->totalData = responseSize;