Bug 131848

Summary: iptables has a couple out of bounds accesses
Product: [Fedora] Fedora Reporter: Steve Grubb <linux_4ever>
Component: iptablesAssignee: Thomas Woerner <twoerner>
Status: CLOSED RAWHIDE QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: rawhide   
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2005-03-18 16:48:57 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 123268, 136451    
Attachments:
Description Flags
Patch that addresses the oob accesses none

Description Steve Grubb 2004-09-05 16:09:18 UTC
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux i586; en-US; rv:1.4.2)
Gecko/20040308

Description of problem:
There are a couple out of bounds accesses in iptables REJECT and rpcs
extensions. They would print garbage, core dump the program, or act
badly. The net effect could be bad if it choked - leaving a table in
an unknown state.

I will attach a patch that fixes it.

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

How reproducible:
Didn't try

Steps to Reproduce:
1. Found in code review.

Additional info:

Comment 1 Steve Grubb 2004-09-05 16:10:44 UTC
Created attachment 103490 [details]
Patch that addresses the oob accesses

Comment 2 Thomas Woerner 2004-09-16 16:03:55 UTC
The second part of the patch is accepted by the netfilter core team,
but the first part is not.

I will apply the second part, but not the first.

Comment 3 Steve Grubb 2004-09-16 16:23:58 UTC
What's wrong with the first part? 

Here's the core of the problem:

for (i=0; i<sizeof(reject_table)/sizeof(struct reject_names); i++) { 
              if (reject_table[i].with == reject->with)
                        break;
}
printf("reject-with %s ", reject_table[i].name);

What if the break is never hit and i > the last legal entry. The
unconditional printf will index beyond the reject_table.

Comment 4 Thomas Woerner 2005-03-18 16:48:57 UTC
Fixed in rawhide in rpm iptables-1.3.0-2 or newer.