Messages in this thread | | | Date | Thu, 17 Jan 2002 14:30:15 -0800 (PST) | Subject | Re: [BUG] Suspected bug in getpeername and getsockname | From | "David S. Miller" <> |
| |
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/
| |