Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
*/
const char *fsp_str_dbg(const struct files_struct *fsp)
{
- return smb_fname_str_dbg(fsp->fsp_name);
+ const char *name = NULL;
+
+ name = smb_fname_str_dbg(fsp->fsp_name);
+ if (name == NULL) {
+ return "";
+ }
+
+ if (fsp->dirfsp == NULL || fsp->dirfsp == fsp->conn->cwd_fsp) {
+ return name;
+ }
+
+ if (ISDOT(fsp->dirfsp->fsp_name->base_name)) {
+ return name;
+ }
+
+ name = talloc_asprintf(talloc_tos(),
+ "%s/%s",
+ fsp->dirfsp->fsp_name->base_name,
+ fsp->fsp_name->base_name);
+ if (name == NULL) {
+ return "";
+ }
+ return name;
}
/**