[lxc-devel] [PATCH] NULL pointer deference if nlmsg_reserve() returns NULL for ifi

Wim Coekaerts wim.coekaerts at oracle.com
Mon Dec 28 23:55:18 UTC 2015


Ah I thought I got the all that had issues. Let me double check 

> On Dec 28, 2015, at 3:53 PM, Serge Hallyn <serge.hallyn at ubuntu.com> wrote:
> 
> Quoting wim.coekaerts at oracle.com (wim.coekaerts at oracle.com):
>> From: Wim Coekaerts <wim.coekaerts at oracle.com>
>> 
>> nlmsg_reserve() might return NULL
>> 
>>        if (nlmsg_len + tlen > nlmsg->cap)
>>                return NULL;
>> 
>> Signed-off-by: Wim Coekaerts <wim.coekaerts at oracle.com>
>> ---
>> src/lxc/network.c |    8 ++++++++
>> 1 files changed, 8 insertions(+), 0 deletions(-)
>> 
>> diff --git a/src/lxc/network.c b/src/lxc/network.c
>> index a6740f5..731c374 100644
>> --- a/src/lxc/network.c
>> +++ b/src/lxc/network.c
>> @@ -274,6 +274,8 @@ int lxc_netdev_delete_by_index(int ifindex)
>>    nlmsg->nlmsghdr->nlmsg_type = RTM_DELLINK;
>> 
>>    ifi = nlmsg_reserve(nlmsg, sizeof(struct ifinfomsg));
>> +    if (!ifi)
>> +        goto out;
>>    ifi->ifi_family = AF_UNSPEC;
>>    ifi->ifi_index = ifindex;
>> 
>> @@ -324,6 +326,8 @@ int lxc_netdev_rename_by_index(int ifindex, const char *newname)
>>    nlmsg->nlmsghdr->nlmsg_type = RTM_NEWLINK;
>> 
>>    ifi = nlmsg_reserve(nlmsg, sizeof(struct ifinfomsg));
>> +    if (!ifi)
>> +        goto out;
>>    ifi->ifi_family = AF_UNSPEC;
>>    ifi->ifi_index = ifindex;
>> 
>> @@ -387,6 +391,8 @@ int netdev_set_flag(const char *name, int flag)
>>    nlmsg->nlmsghdr->nlmsg_type = RTM_NEWLINK;
> 
> Oh, for this one should err be set to ENOMEM?
> 
>>    ifi = nlmsg_reserve(nlmsg, sizeof(struct ifinfomsg));
>> +    if (!ifi)
>> +        goto out;
>>    ifi->ifi_family = AF_UNSPEC;
>>    ifi->ifi_index = index;
>>    ifi->ifi_change |= IFF_UP;
>> @@ -437,6 +443,8 @@ int netdev_get_flag(const char* name, int *flag)
>>    nlmsg->nlmsghdr->nlmsg_type = RTM_GETLINK;
> 
> and this,
> 
>>    ifi = nlmsg_reserve(nlmsg, sizeof(struct ifinfomsg));
>> +    if (!ifi)
>> +        goto out;
>>    ifi->ifi_family = AF_UNSPEC;
>>    ifi->ifi_index = index;
> 
> And actually there are a few other calls to nlmsg_reserve() which
> you are not handling.
> _______________________________________________
> lxc-devel mailing list
> lxc-devel at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel


More information about the lxc-devel mailing list