From 50e98677ca5b62b3b82608c6da3e719956d3a03d Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Mon, 28 Sep 2009 16:52:45 +0200 Subject: [PATCH] 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 --- src/WINNT/afsd/smb3.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) 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; -- 2.39.5