Bug 228706 - [RHEL4] [patch] cid-11 Avoid static buffer overruns in debugfs
[RHEL4] [patch] cid-11 Avoid static buffer overruns in debugfs
Product: Red Hat Enterprise Linux 4
Classification: Red Hat
Component: e2fsprogs (Show other bugs)
All Linux
medium Severity medium
: ---
: ---
Assigned To: Eric Sandeen
Jay Turner
Depends On:
Blocks: 234251 239341
  Show dependency treegraph
Reported: 2007-02-14 11:18 EST by Bryn M. Reeves
Modified: 2015-01-07 19:15 EST (History)
2 users (show)

See Also:
Fixed In Version: RHBA-2007-0758
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2007-11-15 11:01:32 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)
Patch correcting array usage in ls_dir_proc (959 bytes, patch)
2007-02-14 11:18 EST, Bryn M. Reeves
no flags Details | Diff

External Trackers
Tracker ID Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2007:0758 normal SHIPPED_LIVE e2fsprogs bug fix update 2007-11-14 12:06:52 EST

  None (edit)
Description Bryn M. Reeves 2007-02-14 11:18:01 EST
Description of problem:
list_dir_proc uses a buffer allocated on the stack for the file name. This is
sized as EXT2_NAME_LEN and the length of the string is checked:

        char                    name[EXT2_NAME_LEN];
        thislen = ((dirent->name_len & 0xFF) < EXT2_NAME_LEN) ?
                (dirent->name_len & 0xFF) : EXT2_NAME_LEN;

Finally, we copy the string and set the name[thislen] to '\0'.

In the case that thislen == EXT2_NAME_LEN, the '\0' char is stored outside the
bounds of the name array.

Version-Release number of selected component (if applicable):

How reproducible:

Steps to Reproduce:

This isn't easy to reproduce as the stack layout (on i386 anyway) means that an
overflow of 1 byte does not overwrite any other datastructures.

1. Create a filename with length equal to EXT2_NAME_LEN
2. Open the filesystem with debugfs running under gdb
3. Set a breakpoint on list_dir_proc
3. List directory contents
4. Continue until the long filename appears in *dirent
5. Store a known character in the byte following the end of name[]
6. Step through the routine until after the "name[thislen] = '\0';"

Actual results:
The byte after the end of name[] is overwritten.

Expected results:
The assignment stays within the array bounds.
Comment 1 Bryn M. Reeves 2007-02-14 11:18:01 EST
Created attachment 148062 [details]
Patch correcting array usage in ls_dir_proc
Comment 5 RHEL Product and Program Management 2007-05-09 03:43:26 EDT
This request was evaluated by Red Hat Product Management for inclusion in a Red
Hat Enterprise Linux maintenance release.  Product Management has requested
further review of this request by Red Hat Engineering, for potential
inclusion in a Red Hat Enterprise Linux Update release for currently deployed
products.  This request is not yet committed for inclusion in an Update
Comment 6 Eric Sandeen 2007-05-29 16:10:34 EDT
upstream commits for cid-11, cid-12, cid-13 at
Comment 7 Benjamin Kahn 2007-06-08 10:37:16 EDT
Applying a DEV_ACK for Eric Sandeen <sandeen@redhat.com>.  This bug
    was found by coverity and has a patch available.
Comment 10 Eric Sandeen 2007-07-02 16:43:17 EDT
In cvs as of e2fsprogs-1.35-12.7.el4
Comment 14 errata-xmlrpc 2007-11-15 11:01:32 EST
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on the solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.


Note You need to log in before you can comment on or make changes to this bug.