Bug 324737 - length of softlink target names is insufficient
Summary: length of softlink target names is insufficient
Status: RESOLVED FIXED
Alias: None
Product: krusader
Classification: Applications
Component: krviewer (show other bugs)
Version: 2.4.0-beta3 "Single Step"
Platform: Compiled Sources Linux
: NOR major
Target Milestone: ---
Assignee: Krusader Bugs Distribution List
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-09-10 07:21 UTC by Paul Mus
Modified: 2018-05-06 00:15 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Paul Mus 2013-09-10 07:21:24 UTC
The length of the of softlink target names is too short. 

If you create a set of softlinks using the script below, and then successively open the subdirs then you will see that the softlinks become dysfunctional if the target name length exceeds 256 bytes. In Dolphin, everything works fine beyond this length.


Reproducible: Always

Steps to Reproduce:
1. Create a directory named "temp" in your home directory
2. Execute the script shown below
3. Follow the "directoryB-" folders down the folder tree and click on the softlinks to "directoryA-"
Actual Results:  
At the beginning of the folder tree you can open "directoryA-" folders using the corresponding softlink. But at a certain level down the tree (depending on the length of your $HOME), the softlink stops being functional. If you open Properties, you will see that the target name has become incomplete beyond 256 bytes.

Expected Results:  
The softlinks are usable for target names up to the maximum length of filepaths in Linux.

This is the script I used to create the directories and softlinks:

mkdir $HOME/temp/directoryA-01 
mkdir $HOME/temp/directoryA-01/directoryA-02
mkdir $HOME/temp/directoryA-01/directoryA-02/directoryA-03
mkdir $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04
mkdir $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05
mkdir $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06
mkdir $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07
mkdir $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08
mkdir $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09
mkdir $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09/directoryA-10
mkdir $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09/directoryA-10/directoryA-11
mkdir $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09/directoryA-10/directoryA-11/directoryA-12
mkdir $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09/directoryA-10/directoryA-11/directoryA-12/directoryA-13/
mkdir $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09/directoryA-10/directoryA-11/directoryA-12/directoryA-13/directoryA-14
mkdir $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09/directoryA-10/directoryA-11/directoryA-12/directoryA-13/directoryA-14/directoryA-15
mkdir $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09/directoryA-10/directoryA-11/directoryA-12/directoryA-13/directoryA-14/directoryA-15/directoryA-16
mkdir $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09/directoryA-10/directoryA-11/directoryA-12/directoryA-13/directoryA-14/directoryA-15/directoryA-16/directoryA-17
mkdir $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09/directoryA-10/directoryA-11/directoryA-12/directoryA-13/directoryA-14/directoryA-15/directoryA-16/directoryA-17/directoryA-18
mkdir $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09/directoryA-10/directoryA-11/directoryA-12/directoryA-13/directoryA-14/directoryA-15/directoryA-16/directoryA-17/directoryA-18/directoryA-19
mkdir $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09/directoryA-10/directoryA-11/directoryA-12/directoryA-13/directoryA-14/directoryA-15/directoryA-16/directoryA-17/directoryA-18/directoryA-19/directoryA-20

mkdir $HOME/temp/directoryB-01 
mkdir $HOME/temp/directoryB-01/directoryB-02
mkdir $HOME/temp/directoryB-01/directoryB-02/directoryB-03
mkdir $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04
mkdir $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05
mkdir $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06
mkdir $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07
mkdir $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08
mkdir $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09
mkdir $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09/directoryB-10
mkdir $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09/directoryB-10/directoryB-11
mkdir $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09/directoryB-10/directoryB-11/directoryB-12
mkdir $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09/directoryB-10/directoryB-11/directoryB-12/directoryB-13/
mkdir $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09/directoryB-10/directoryB-11/directoryB-12/directoryB-13/directoryB-14
mkdir $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09/directoryB-10/directoryB-11/directoryB-12/directoryB-13/directoryB-14/directoryB-15
mkdir $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09/directoryB-10/directoryB-11/directoryB-12/directoryB-13/directoryB-14/directoryB-15/directoryB-16
mkdir $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09/directoryB-10/directoryB-11/directoryB-12/directoryB-13/directoryB-14/directoryB-15/directoryB-16/directoryB-17
mkdir $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09/directoryB-10/directoryB-11/directoryB-12/directoryB-13/directoryB-14/directoryB-15/directoryB-16/directoryB-17/directoryB-18
mkdir $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09/directoryB-10/directoryB-11/directoryB-12/directoryB-13/directoryB-14/directoryB-15/directoryB-16/directoryB-17/directoryB-18/directoryB-19
mkdir $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09/directoryB-10/directoryB-11/directoryB-12/directoryB-13/directoryB-14/directoryB-15/directoryB-16/directoryB-17/directoryB-18/directoryB-19/directoryB-20

ln -s $HOME/temp/directoryA-01 $HOME/temp/directoryB-01 
ln -s $HOME/temp/directoryA-01/directoryA-02 $HOME/temp/directoryB-01/directoryB-02
ln -s $HOME/temp/directoryA-01/directoryA-02/directoryA-03 $HOME/temp/directoryB-01/directoryB-02/directoryB-03
ln -s $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04 $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04
ln -s $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05 $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05
ln -s $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06 $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06
ln -s $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07 $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07
ln -s $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08 $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08
ln -s $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09 $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09
ln -s $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09/directoryA-10 $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09/directoryB-10
ln -s $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09/directoryA-10/directoryA-11 $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09/directoryB-10/directoryB-11
ln -s $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09/directoryA-10/directoryA-11/directoryA-12 $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09/directoryB-10/directoryB-11/directoryB-12
ln -s $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09/directoryA-10/directoryA-11/directoryA-12/directoryA-13/ $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09/directoryB-10/directoryB-11/directoryB-12/directoryB-13/
ln -s $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09/directoryA-10/directoryA-11/directoryA-12/directoryA-13/directoryA-14 $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09/directoryB-10/directoryB-11/directoryB-12/directoryB-13/directoryB-14
ln -s $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09/directoryA-10/directoryA-11/directoryA-12/directoryA-13/directoryA-14/directoryA-15 $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09/directoryB-10/directoryB-11/directoryB-12/directoryB-13/directoryB-14/directoryB-15
ln -s $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09/directoryA-10/directoryA-11/directoryA-12/directoryA-13/directoryA-14/directoryA-15/directoryA-16 $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09/directoryB-10/directoryB-11/directoryB-12/directoryB-13/directoryB-14/directoryB-15/directoryB-16
ln -s $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09/directoryA-10/directoryA-11/directoryA-12/directoryA-13/directoryA-14/directoryA-15/directoryA-16/directoryA-17 $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09/directoryB-10/directoryB-11/directoryB-12/directoryB-13/directoryB-14/directoryB-15/directoryB-16/directoryB-17
ln -s $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09/directoryA-10/directoryA-11/directoryA-12/directoryA-13/directoryA-14/directoryA-15/directoryA-16/directoryA-17/directoryA-18 $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09/directoryB-10/directoryB-11/directoryB-12/directoryB-13/directoryB-14/directoryB-15/directoryB-16/directoryB-17/directoryB-18
ln -s $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09/directoryA-10/directoryA-11/directoryA-12/directoryA-13/directoryA-14/directoryA-15/directoryA-16/directoryA-17/directoryA-18/directoryA-19 $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09/directoryB-10/directoryB-11/directoryB-12/directoryB-13/directoryB-14/directoryB-15/directoryB-16/directoryB-17/directoryB-18/directoryB-19
ln -s $HOME/temp/directoryA-01/directoryA-02/directoryA-03/directoryA-04/directoryA-05/directoryA-06/directoryA-07/directoryA-08/directoryA-09/directoryA-10/directoryA-11/directoryA-12/directoryA-13/directoryA-14/directoryA-15/directoryA-16/directoryA-17/directoryA-18/directoryA-19/directoryA-20 $HOME/temp/directoryB-01/directoryB-02/directoryB-03/directoryB-04/directoryB-05/directoryB-06/directoryB-07/directoryB-08/directoryB-09/directoryB-10/directoryB-11/directoryB-12/directoryB-13/directoryB-14/directoryB-15/directoryB-16/directoryB-17/directoryB-18/directoryB-19/directoryB-20
Comment 1 Jan Lepper 2013-09-22 11:25:56 UTC
Git commit e6eddf7a8c4291006c93d556eecd4927510d5d8b by Jan Lepper.
Committed on 22/09/2013 at 09:24.
Pushed by janlepper into branch 'master'.

FIXED: [ 324737 ] symlinks with a target path length of over 255 do not work

M  +1    -0    ChangeLog
M  +10   -8    krusader/VFS/normal_vfs.cpp

http://commits.kde.org/krusader/e6eddf7a8c4291006c93d556eecd4927510d5d8b