Author: mmlr Date: 2010-12-27 00:07:18 +0100 (Mon, 27 Dec 2010) New Revision: 39954 Changeset: http://dev.haiku-os.org/changeset/39954 Modified: haiku/trunk/src/add-ons/kernel/file_systems/ntfs/ntfsdir.c Log: * CID 2195: sizeof() was used on the buffer pointer instead of the type. * Use strlcpy() instead of memcpy() to ensure that the dirent is properly terminated. Modified: haiku/trunk/src/add-ons/kernel/file_systems/ntfs/ntfsdir.c =================================================================== --- haiku/trunk/src/add-ons/kernel/file_systems/ntfs/ntfsdir.c 2010-12-26 22:42:28 UTC (rev 39953) +++ haiku/trunk/src/add-ons/kernel/file_systems/ntfs/ntfsdir.c 2010-12-26 23:07:18 UTC (rev 39954) @@ -164,12 +164,13 @@ } status_t -fs_readdir( fs_volume *_vol, fs_vnode *_node, void *_cookie, struct dirent *buf, size_t bufsize, uint32 *num ) +fs_readdir(fs_volume *_vol, fs_vnode *_node, void *_cookie, struct dirent *buf, + size_t bufsize, uint32 *num) { nspace *ns = (nspace*)_vol->private_volume; vnode *node = (vnode*)_node->private_node; dircookie *cookie = (dircookie*)_cookie; - uint32 nameLength = bufsize - sizeof(buf) + 1, realLen; + uint32 nameLength = bufsize - sizeof(struct dirent), realLen; int result = B_NO_ERROR; ntfs_inode *ni=NULL; @@ -196,11 +197,11 @@ result = ntfs_readdir(ni, &cookie->pos, cookie, (ntfs_filldir_t)_ntfs_dirent_filler); - realLen = nameLength>255?255:nameLength; + realLen = nameLength > 255 ? 255 : nameLength; buf->d_dev = ns->id; buf->d_ino = cookie->ino; - memcpy(buf->d_name,cookie->name, realLen+1); - buf->d_reclen = sizeof(buf) + realLen - 1; + strlcpy(buf->d_name, cookie->name, realLen + 1); + buf->d_reclen = sizeof(struct dirent) + realLen; if(result==0) cookie->last = 1;