1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-25 23:21:54 +03:00

s3:smbd: parse xattr_DosInfo4 in parse_dos_attribute_blob()

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
This commit is contained in:
Ralph Boehme 2019-06-25 14:25:21 +02:00 committed by Jeremy Allison
parent c03094cc1f
commit d54424a758

View File

@ -325,6 +325,50 @@ NTSTATUS parse_dos_attribute_blob(struct smb_filename *smb_fname,
create_time)));
}
break;
case 4:
{
struct xattr_DosInfo4 *info = &dosattrib.info.info4;
dosattr = info->attrib;
if ((info->valid_flags & XATTR_DOSINFO_CREATE_TIME) &&
!null_nttime(info->create_time))
{
struct timespec creat_time;
creat_time = nt_time_to_unix_timespec(info->create_time);
update_stat_ex_create_time(&smb_fname->st, creat_time);
DBG_DEBUG("file [%s] creation time [%s]\n",
smb_fname_str_dbg(smb_fname),
nt_time_string(talloc_tos(), info->create_time));
}
if (info->valid_flags & XATTR_DOSINFO_ITIME) {
struct timespec itime;
uint64_t file_id;
itime = nt_time_to_unix_timespec(info->itime);
if (smb_fname->st.st_ex_iflags &
ST_EX_IFLAG_CALCULATED_ITIME)
{
update_stat_ex_itime(&smb_fname->st, itime);
}
file_id = make_file_id_from_itime(&smb_fname->st);
if (smb_fname->st.st_ex_iflags &
ST_EX_IFLAG_CALCULATED_FILE_ID)
{
update_stat_ex_file_id(&smb_fname->st, file_id);
}
DBG_DEBUG("file [%s] itime [%s] fileid [%"PRIx64"]\n",
smb_fname_str_dbg(smb_fname),
nt_time_string(talloc_tos(), info->itime),
file_id);
}
break;
}
default:
DBG_WARNING("Badly formed DOSATTRIB on file %s - %s\n",
smb_fname_str_dbg(smb_fname), blob.data);