Re: [BUG] Suspected bug in getpeername and getsockname

David S. Miller (davem@redhat.com)
Thu, 17 Jan 2002 14:30:15 -0800 (PST)


From: "Balbir Singh" <balbir_soni@hotmail.com>
Date: Thu, 17 Jan 2002 14:11:06 -0800

The reasons why I wanted to pass the address is length
is

1. It gives more flexibility for any body implementing
the protocol specific code.

And you could do what with this flexibility that can't be taken care
of at the top level?

2. We anyway copy the length in move_addr_to_user, we
might as well do it in the system call and pass the
length to the protocol.

Why? What are you going to DO, read this: _DO_, with the
value?

3. We can finally copy only the length specified back
to the user as we do currently.

We already do this in move_addr_to_user. If we do it in
one place, we don't have to duplicate (and thus risk bugs
in) this logic in the various protocols.

But, consider a case where a user passes a negative value
in len.

Now you are totally talking non-sense. A negative len is
an error (-EINVAL) and move_addr_to_user handles this case
just fine.

I feel the error should be caught first hand, we should not have
spent the time and space calling the protocol specific code at all,
we should catch the error and return immediately.
...
Don't u feel they should be fixed.

If you want to move the "if (len < 0) return -EINVAL;" right before
the ->getname() invocation, feel free. However, this is code
duplication and is error prone.

But either way, this is not an argument at all to move the user len
into the protocols. YOU DONT NEED TO, and you never will, to
accomplish any legitimate task.

Again the question remains, why would you ever need the user len in
the protocol handlers? All I am hearing is a bunch of hot air so far
with no real substance.

Franks a lot,
David S. Miller
davem@redhat.com
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/