lkml.org 
[lkml]   [2011]   [Jun]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[34-longterm 232/247] net: ax25: fix information leak to userland
    Date
    From: Vasiliy Kulikov <segooon@gmail.com>

    -------------------
    This is a commit scheduled for the next v2.6.34 longterm release.
    If you see a problem with using this for longterm, please comment.
    -------------------

    commit fe10ae53384e48c51996941b7720ee16995cbcb7 upstream.

    Sometimes ax25_getname() doesn't initialize all members of fsa_digipeater
    field of fsa struct, also the struct has padding bytes between
    sax25_call and sax25_ndigis fields. This structure is then copied to
    userland. It leads to leaking of contents of kernel stack memory.

    Signed-off-by: Vasiliy Kulikov <segooon@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
    ---
    net/ax25/af_ax25.c | 2 +-
    1 files changed, 1 insertions(+), 1 deletions(-)

    diff --git a/net/ax25/af_ax25.c b/net/ax25/af_ax25.c
    index 65c5801..eb100ce 100644
    --- a/net/ax25/af_ax25.c
    +++ b/net/ax25/af_ax25.c
    @@ -1392,6 +1392,7 @@ static int ax25_getname(struct socket *sock, struct sockaddr *uaddr,
    ax25_cb *ax25;
    int err = 0;

    + memset(fsa, 0, sizeof(fsa));
    lock_sock(sk);
    ax25 = ax25_sk(sk);

    @@ -1403,7 +1404,6 @@ static int ax25_getname(struct socket *sock, struct sockaddr *uaddr,

    fsa->fsa_ax25.sax25_family = AF_AX25;
    fsa->fsa_ax25.sax25_call = ax25->dest_addr;
    - fsa->fsa_ax25.sax25_ndigis = 0;

    if (ax25->digipeat != NULL) {
    ndigi = ax25->digipeat->ndigi;
    --
    1.7.4.4


    \
     
     \ /
      Last update: 2011-06-23 19:49    [W:4.033 / U:0.712 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site