Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e36cd4a2 authored by J. Bruce Fields's avatar J. Bruce Fields
Browse files

nfsd: don't allow setting ctime over v4



Presumably this is left over from earlier drafts of v4, which listed
TIME_METADATA as writeable.  It's read-only in rfc 3530, and shouldn't
be modifiable anyway.

Signed-off-by: default avatarJ. Bruce Fields <bfields@citi.umich.edu>
parent c272cca6
Loading
Loading
Loading
Loading
+0 −14
Original line number Original line Diff line number Diff line
@@ -376,20 +376,6 @@ nfsd4_decode_fattr(struct nfsd4_compoundargs *argp, u32 *bmval, struct iattr *ia
			goto xdr_error;
			goto xdr_error;
		}
		}
	}
	}
	if (bmval[1] & FATTR4_WORD1_TIME_METADATA) {
		/* We require the high 32 bits of 'seconds' to be 0, and we ignore
		   all 32 bits of 'nseconds'. */
		READ_BUF(12);
		len += 12;
		READ32(dummy32);
		if (dummy32)
			return nfserr_inval;
		READ32(iattr->ia_ctime.tv_sec);
		READ32(iattr->ia_ctime.tv_nsec);
		if (iattr->ia_ctime.tv_nsec >= (u32)1000000000)
			return nfserr_inval;
		iattr->ia_valid |= ATTR_CTIME;
	}
	if (bmval[1] & FATTR4_WORD1_TIME_MODIFY_SET) {
	if (bmval[1] & FATTR4_WORD1_TIME_MODIFY_SET) {
		READ_BUF(4);
		READ_BUF(4);
		len += 4;
		len += 4;
+1 −1
Original line number Original line Diff line number Diff line
@@ -329,7 +329,7 @@ extern struct timeval nfssvc_boot;
(FATTR4_WORD0_SIZE              | FATTR4_WORD0_ACL                                         )
(FATTR4_WORD0_SIZE              | FATTR4_WORD0_ACL                                         )
#define NFSD_WRITEABLE_ATTRS_WORD1                                                          \
#define NFSD_WRITEABLE_ATTRS_WORD1                                                          \
(FATTR4_WORD1_MODE              | FATTR4_WORD1_OWNER         | FATTR4_WORD1_OWNER_GROUP     \
(FATTR4_WORD1_MODE              | FATTR4_WORD1_OWNER         | FATTR4_WORD1_OWNER_GROUP     \
 | FATTR4_WORD1_TIME_ACCESS_SET | FATTR4_WORD1_TIME_METADATA | FATTR4_WORD1_TIME_MODIFY_SET)
 | FATTR4_WORD1_TIME_ACCESS_SET | FATTR4_WORD1_TIME_MODIFY_SET)


#endif /* CONFIG_NFSD_V4 */
#endif /* CONFIG_NFSD_V4 */