Ticket #12152: 0001-When-realloc-address-size-returns-NULL-address-must-.2.patch

File 0001-When-realloc-address-size-returns-NULL-address-must-.2.patch, 1.0 KB (added by philcostin, 9 years ago)

patch with suggestions from Janus

  • src/add-ons/kernel/network/stack/interfaces.cpp

    From cd368d4fb5d891a18839ed1d75f838afb1cbb71a Mon Sep 17 00:00:00 2001
    From: Phil Costin <philcostin@hotmail.com>
    Date: Sun, 14 Jun 2015 00:34:56 +0100
    Subject: [PATCH] When realloc(address, size) returns NULL, address must be
     freed manually.
    
    ---
     src/add-ons/kernel/network/stack/interfaces.cpp | 9 +++++++--
     1 file changed, 7 insertions(+), 2 deletions(-)
    
    diff --git a/src/add-ons/kernel/network/stack/interfaces.cpp b/src/add-ons/kernel/network/stack/interfaces.cpp
    index 20b4110..2a9818d 100644
    a b InterfaceAddress::Prepare(sockaddr** _address, size_t size)  
    410410    sockaddr* address = *_address;
    411411
    412412    if (address == NULL || size > address->sa_len) {
    413         address = (sockaddr*)realloc(address, size);
    414         if (address == NULL)
     413        sockaddr* resized = (sockaddr*)realloc(address, size);
     414
     415        if (resized == NULL) {
     416            free(address);
    415417            return NULL;
     418        }
     419
     420        address = resized;
    416421    }
    417422
    418423    address->sa_len = size;