• Alexey Khoroshilov's avatar
    farsync: fix invalid memory accesses in fst_add_one() and fst_init_card() · 19eeb2f9
    Alexey Khoroshilov authored
    There are several issues in fst_add_one() and fst_init_card():
    - invalid pointer dereference at card->ports[card->nports - 1] if
      register_hdlc_device() fails for the first port in fst_init_card();
    - fst_card_array overflow at fst_card_array[no_of_cards_added]
      because there is no checks for array overflow;
    - use after free because pointer to deallocated card is left in fst_card_array
      if something fails after fst_card_array[no_of_cards_added] = card;
    - several leaks on failure paths in fst_add_one().
    
    The patch fixes all the issues and makes code more readable.
    
    Found by Linux Driver Verification project (linuxtesting.org).
    Signed-off-by: default avatarAlexey Khoroshilov <khoroshilov@ispras.ru>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    19eeb2f9
farsync.c 70.1 KB