lkml.org 
[lkml]   [2010]   [Apr]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] IPVS: replace sprintf to snprintf to avoid stack buffer overflow
    On Wed, Apr 07, 2010 at 06:09:54PM +0200, Patrick McHardy wrote:
    > Simon Horman wrote:
    > > On Tue, Apr 06, 2010 at 10:50:20AM +0800, wzt.wzt@gmail.com wrote:
    > >> IPVS not check the length of pp->name, use sprintf will cause stack buffer overflow.
    > >> struct ip_vs_protocol{} declare name as char *, if register a protocol as:
    > >> struct ip_vs_protocol ip_vs_test = {
    > >> .name = "aaaaaaaa....128...aaa",
    > >> .debug_packet = ip_vs_tcpudp_debug_packet,
    > >> };
    > >>
    > >> when called ip_vs_tcpudp_debug_packet(), sprintf(buf, "%s TRUNCATED", pp->name);
    > >> will cause stack buffer overflow.
    > >>
    > >> Signed-off-by: Zhitong Wang <zhitong.wangzt@alibaba-inc.com>
    > >
    > > I think that the simple answer is, don't do that.
    >
    > Indeed.
    >
    > > But your patch seems entirely reasonable to me.
    > >
    > > Acked-by: Simon Horman <horms@verge.net.au>
    > >
    > > Patrick, please consider merging this.
    >
    > I think this fix is a bit silly, we can simply print the name in
    > the pr_debug() statement and avoid both the potential overflow
    > and truncation.
    >
    > How does this look?

    Looks good to me:

    Acked-by: Simon Horman <horms@verge.net.au>



    \
     
     \ /
      Last update: 2010-04-08 00:37    [W:0.020 / U:32.376 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site