Bug 228706 - [RHEL4] [patch] cid-11 Avoid static buffer overruns in debugfs
[RHEL4] [patch] cid-11 Avoid static buffer overruns in debugfs
Status: CLOSED ERRATA
Product: Red Hat Enterprise Linux 4
Classification: Red Hat
Component: e2fsprogs (Show other bugs)
4.4
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:
Environment:
Last Closed: 2007-11-15 11:01:32 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
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

  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):
e2fsprogs-1.35-12.4.EL4

How reproducible:
100%

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
release.
Comment 6 Eric Sandeen 2007-05-29 16:10:34 EDT
upstream commits for cid-11, cid-12, cid-13 at
http://thunk.org/hg/e2fsprogs/?rev/4c321a4ecbd6
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.

http://rhn.redhat.com/errata/RHBA-2007-0758.html

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