jpcima / smf-dsp

Advanced MIDI file player
Boost Software License 1.0
46 stars 5 forks source link

`make_path_absolute` can be wrong when path contains symlinks #11

Open jpcima opened 4 years ago

jpcima commented 4 years ago

It will be wrong to simplify a path by elimination of foo/../ kind of patterns, in case foo is a symlink.

The directory part of path may be resolved by file system API:

HANDLE hDirectory = CreateFile(
    path,
    0,
    FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,
    nullptr,
    OPEN_EXISTING,
    FILE_FLAG_BACKUP_SEMANTICS,
    nullptr);

GetFinalPathNameByHandleA(
    hDirectory,
    path,
    pathlen,
    VOLUME_NAME_DOS|FILE_NAME_NORMALIZED);