View Issue Details

IDProjectCategoryView StatusLast Update
0000664Far ManagerPanel.QViewpublic2008-12-18 12:00
Reporteralexmitin Assigned Toalexy  
PrioritynormalSeveritycrashReproducibilityalways
Status closedResolutionfixed 
Platformx86OSWindowsOS VersionXP SP2
Fixed in Version2.0 
Summary0000664: Crash while using Quck View on Volume Mount Point
DescriptionThere is a crash when using Quick View on Volume Mount Point.

Steps to reproduce:
1) Create an empty folder c:\mnt\DiskV
2) Create a volume mount point using eigther "Disk Management" console or mountvol.exe:

mountvol c:\mnt\DiskV \\?\Volume{3e296859-a2fb-124d-99b6-5987ca454512}\

3) Select the C:\mnt\DiskV in the FAR.
4) Press Ctrl+Q to show the Quick View panel.

Actual Result:
---------------
The Quick View panel shows garbage in the "Volume mount point" field. Sometimes FAR crashes.


Expected Result:
---------------
The "Volume mount point" field shows the actual mapping point. Either volume ID or mapped drive letter or both.


Analysis
-----------------
There is a problem in a function QuickView::DisplayObject().

---[code.begin]----------------
void QuickView::DisplayObject()
{
...
      string strJuncName; <==[code.A]==
      DWORD ReparseTag=0;
      if(GetReparsePointInfo(strCurFileName, strJuncName,&ReparseTag)) //"\??\D:\Junc\Src\"
      {
        int ID_Msg=MQuickViewJunction, Width=11;
        int offset=0;
        if (!StrCmpN(strJuncName,L"\\??\\",4))
          offset=4; <==[code.B]==

        if(ReparseTag==IO_REPARSE_TAG_MOUNT_POINT)
        {
          if(IsLocalVolumePath(strJuncName) && !strJuncName.At(49))
          {
            string strJuncRoot;
            GetPathRootOne(&strJuncName[offset], strJuncRoot);
            if( strJuncRoot.At(1) == L':')
            {
              strJuncName = strJuncRoot; <==[code.C]===
            }
            ID_Msg=MQuickViewVolMount;
            Width=21;
          }
        }
        else if(ReparseTag==IO_REPARSE_TAG_SYMLINK)
        {
          ID_Msg=MQuickViewSymlink;
          Width=11;
        }
        string strJuncTemp=&strJuncName[offset]; <==[bug.1]===
...
}
---[code.end]------------------

Check the following places: code.A, code.B, code.C, bug.1
Additional InformationFAR 2.0 Build 657
TagsNo tags attached.
Build658

Activities

alexy

2008-12-17 09:51

administrator   bugnote:0002179

658

alexmitin

2008-12-18 01:58

reporter   bugnote:0002191

verified in 660.

Issue History

Date Modified Username Field Change
2008-12-17 03:06 alexmitin New Issue
2008-12-17 08:44 alexy Status new => assigned
2008-12-17 08:44 alexy Assigned To => alexy
2008-12-17 09:51 alexy Note Added: 0002179
2008-12-17 09:51 alexy Status assigned => feedback
2008-12-18 01:58 alexmitin Note Added: 0002191
2008-12-18 01:58 alexmitin Status feedback => resolved
2008-12-18 01:58 alexmitin Resolution open => fixed
2008-12-18 11:59 alexy Build => 658
2008-12-18 11:59 alexy Status resolved => closed
2008-12-18 12:00 alexy Fixed in Version => 2.0