[SCTP] Fix leak in sctp_getsockopt_local_addrs when copy_to_user fails

If the copy_to_user or copy_user calls fail in sctp_getsockopt_local_addrs(),
the function should free locally allocated storage before returning error.
Spotted by Coverity.

Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Acked-by: Sridhar Samudrala <sri@us.ibm.com>
This commit is contained in:
Vlad Yasevich 2007-05-23 11:11:37 -04:00 committed by Vladislav Yasevich
parent 8b35805693
commit fe979ac169

View File

@ -4352,11 +4352,12 @@ static int sctp_getsockopt_local_addrs(struct sock *sk, int len,
err = -EFAULT;
goto error;
}
if (put_user(cnt, &((struct sctp_getaddrs __user *)optval)->addr_num))
return -EFAULT;
if (put_user(cnt, &((struct sctp_getaddrs __user *)optval)->addr_num)) {
err = -EFAULT;
goto error;
}
if (put_user(bytes_copied, optlen))
return -EFAULT;
err = -EFAULT;
error:
kfree(addrs);
return err;