From 827ed37ec368d7df6274382fdbccc64418398e51 Mon Sep 17 00:00:00 2001 From: "(none)!yura" <(none)!yura> Date: Sun, 17 Oct 2004 09:50:21 +0000 Subject: [PATCH] Validate attribute type in ntfs_inode_add_attr(). (Logical change 1.614) --- libntfs/inode.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/libntfs/inode.c b/libntfs/inode.c index 921ed711..171d16c3 100644 --- a/libntfs/inode.c +++ b/libntfs/inode.c @@ -836,6 +836,22 @@ ntfs_attr *ntfs_inode_add_attr(ntfs_inode *ni, ATTR_TYPES type, if (ni->nr_extents == -1) ni = ni->base_ni; + /* Validate attribute type. */ + if (!ntfs_attr_find_in_attrdef(ni->vol, type)) { + if (errno == ENOENT) { + Dprintf("%s(): Invalid attribute type.\n", + __FUNCTION__); + errno = EINVAL; + return NULL; + } else { + err = errno; + Dprintf("%s(): ntfs_attr_find_in_attrdef failed.\n", + __FUNCTION__); + errno = err; + return NULL; + } + } + /* * Determine resident or not will be new attribute. We add 8 to size in * non resident case for mapping pairs.