From: Vladislav Yasevich <vladislav.yasevich@hp•com>
To: davem@davemloft•net, linux-sctp@vger•kernel.org, netdev@vger•kernel.org
Subject: Re: [PATCH] scpt: Allow struct sctp_event_subscribe to grow without breaking binaries
Date: Wed, 04 Apr 2012 09:52:04 -0400 [thread overview]
Message-ID: <4F7C5204.9040703@hp.com> (raw)
In-Reply-To: <20120404081753.GA5124@canuck.infradead.org>
On 04/04/2012 04:17 AM, Thomas Graf wrote:
> getsockopt(..., SCTP_EVENTS, ...) performs a length check and returns
> an error if the user provides less bytes than the size of struct
> sctp_event_subscribe.
>
> Struct sctp_event_subscribe needs to be extended by an u8 for every
> new event or notification type that is added.
>
> This obviously makes getsockopt fail for binaries that are compiled
> against an older versions of <net/sctp/user.h> which do not contain
> all event types.
>
> This patch changes getsockopt behaviour to no longer return an error
> if not enough bytes are being provided by the user. Instead, it
> returns as much of sctp_event_subscribe as fits into the provided buffer.
>
> This leads to the new behavior that users see what they have been aware
> of at compile time.
>
> The setsockopt(..., SCTP_EVENTS, ...) API is already behaving like this.
>
> Signed-off-by: Thomas Graf <tgraf@suug•ch>
Acked-by: Vlad Yasevich <vladislav.yasevich@hp•com>
-vlad
> ---
> net/sctp/socket.c | 5 +++--
> 1 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/net/sctp/socket.c b/net/sctp/socket.c
> index 06b42b7..92ba71d 100644
> --- a/net/sctp/socket.c
> +++ b/net/sctp/socket.c
> @@ -4133,9 +4133,10 @@ static int sctp_getsockopt_disable_fragments(struct sock *sk, int len,
> static int sctp_getsockopt_events(struct sock *sk, int len, char __user *optval,
> int __user *optlen)
> {
> - if (len < sizeof(struct sctp_event_subscribe))
> + if (len <= 0)
> return -EINVAL;
> - len = sizeof(struct sctp_event_subscribe);
> + if (len > sizeof(struct sctp_event_subscribe))
> + len = sizeof(struct sctp_event_subscribe);
> if (put_user(len, optlen))
> return -EFAULT;
> if (copy_to_user(optval, &sctp_sk(sk)->subscribe, len))
>
next prev parent reply other threads:[~2012-04-04 13:59 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-04-04 8:17 [PATCH] scpt: Allow struct sctp_event_subscribe to grow without breaking binaries Thomas Graf
2012-04-04 13:52 ` Vladislav Yasevich [this message]
2012-04-04 22:05 ` David Miller
2012-04-04 22:13 ` Thomas Graf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4F7C5204.9040703@hp.com \
--to=vladislav.yasevich@hp$(echo .)com \
--cc=davem@davemloft$(echo .)net \
--cc=linux-sctp@vger$(echo .)kernel.org \
--cc=netdev@vger$(echo .)kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox