bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Implement getsockopt (fd, SOL_SOCKET, SO_TYPE, ...)


From: Ludovic Courtès
Subject: Re: [PATCH] Implement getsockopt (fd, SOL_SOCKET, SO_TYPE, ...)
Date: Sat, 17 Jul 2010 16:50:33 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux)

Hi,

Carl Fredrik Hammar <hammy.lite@gmail.com> writes:

> On Sat, Jul 17, 2010 at 03:36:43PM +0200, Ludovic Courtès wrote:
>> Emilio Pozuelo Monfort <pochu27@gmail.com> writes:
>> 
>> >  error_t
>> >  S_socket_getopt (struct sock_user *user,
>> >             int level, int opt,
>> >             char **value, size_t *value_len)
>> >  {
>> > -  return EOPNOTSUPP;
>> > +  int ret = 0;
>> > +
>> > +  if (!user)
>> > +    return EOPNOTSUPP;
>> > +
>> > +  mutex_lock (&user->sock->lock);
>> > +  switch (level)
>> > +    {
>> > +    case SOL_SOCKET:
>> > +      switch (opt)
>> > +  {
>> > +  case SO_TYPE:
>> > +    assert (*value_len >= sizeof (int));
>> 
>> IIUC, a client could pass *VALUE_LEN = 0 and cause the server to abort,
>> because of the assertion here.
>
> We have thought of this.
>
> The value does not come from the client, it comes from MIG generated
> code which gives you the (hard coded) length of a buffer inlined in the
> reply message.  The client cannot affect this.

OK, thanks for the explanation.

Ludo’.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]