Lines 717-722
Link Here
|
717 |
pstring savedir; |
717 |
pstring savedir; |
718 |
pstring realdir; |
718 |
pstring realdir; |
719 |
size_t reallen; |
719 |
size_t reallen; |
|
|
720 |
int linklen; |
720 |
|
721 |
|
721 |
if (!vfs_GetWd(conn, savedir)) { |
722 |
if (!vfs_GetWd(conn, savedir)) { |
722 |
DEBUG(0,("couldn't vfs_GetWd for %s %s\n", name, dir)); |
723 |
DEBUG(0,("couldn't vfs_GetWd for %s %s\n", name, dir)); |
Lines 740-751
Link Here
|
740 |
realdir[reallen] = 0; |
741 |
realdir[reallen] = 0; |
741 |
} |
742 |
} |
742 |
|
743 |
|
743 |
if (conn->vfs_ops.readlink(conn, name, flink, sizeof(pstring) -1) != -1) { |
744 |
if( (linklen = conn->vfs_ops.readlink(conn, name, flink, sizeof(pstring) -1)) != -1 ) { |
|
|
745 |
flink[linklen] = '\0'; |
744 |
DEBUG(3,("reduce_name: file path name %s is a symlink\nChecking it's path\n", name)); |
746 |
DEBUG(3,("reduce_name: file path name %s is a symlink\nChecking it's path\n", name)); |
745 |
if (*flink == '/') { |
747 |
if (*flink == '/') { |
746 |
pstrcpy(cleanlink, flink); |
748 |
pstrcpy(cleanlink, flink); |
747 |
} else { |
749 |
} else { |
748 |
pstrcpy(cleanlink, realdir); |
750 |
char* cp; |
|
|
751 |
pstrcpy( cleanlink, name ); |
752 |
if( (cp = strrchr( cleanlink, '/' )) != NULL ) |
753 |
*cp = '\0'; |
749 |
pstrcat(cleanlink, "/"); |
754 |
pstrcat(cleanlink, "/"); |
750 |
pstrcat(cleanlink, flink); |
755 |
pstrcat(cleanlink, flink); |
751 |
} |
756 |
} |