diff --git a/CHANGES.txt b/CHANGES.txt
index 77d1b2be6194efe0f90419b52744ac51dbbb4e9f..586d604e51099cfa321cdd689e8127f53b8b3ca9 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -71,6 +71,9 @@ by Rob Joyce.
 4/11/09: Bug Fix: Fixed issue 2662168 re: warning messages on macs
 when reading the raw character device.  patch by Rob Joyce. 
 
+4/21/09: Bug Fix. Fixed issue 2778170 re: incorrect read size on resident
+attributes.  Patch by Jamie Butler. 
+
 ---------------- VERSION 3.0.0 -------------- 
 0/00/00: Update: Many, many, many API changes.
 
diff --git a/tsk3/fs/fs_attr.c b/tsk3/fs/fs_attr.c
index 3048ddd1c7d17dc69eee467ce1509a6c3c7ae784..6ced0f2afc5666b580603c206f5034e93b4e5141 100644
--- a/tsk3/fs/fs_attr.c
+++ b/tsk3/fs/fs_attr.c
@@ -1032,12 +1032,12 @@ tsk_fs_attr_read(const TSK_FS_ATTR * a_fs_attr, TSK_OFF_T a_offset,
     else if (a_fs_attr->flags & TSK_FS_ATTR_RES) {
         size_t read_len;
 
-        if (a_offset > a_fs_attr->rd.buf_size) {
+        if (a_offset > a_fs_attr->size) {
             return 0;
         }
 
-        if (a_len + a_offset > a_fs_attr->rd.buf_size)
-            read_len = a_fs_attr->rd.buf_size - (size_t) a_offset;
+        if (a_offset + a_len > a_fs_attr->size)
+            read_len = a_fs_attr->size - (size_t) a_offset;
         else
             read_len = a_len;