On Fri, 17 Sep 2004, Brooks Davis wrote: > On Fri, Sep 17, 2004 at 09:30:19PM +0200, Dag-Erling Smørgrav wrote: > > Brooks Davis <brooks_at_one-eyed-alien.net> writes: > > > Thus, so you have to know how much space you will > > > need before doing any kind of allocation, hence the double loop and the > > > potential race. > > > > Using sbufs removes the need for loop and greatly simplifies how you > > deal with overflows. > > Indeed it does. I'm not fully happy with the hardcoding of a maximum > size, but I doubt anyone will hit it in practice. Here's a new and > improved patch that makes a single pass and uses sbufs. Have you tried seeing just how many addresses you can add before getifaddrs() fails to return the complete list? 128k seems like a lot, but I instrumente ifconf() locally a couple of weeks ago when I first became aware of this problem, and discovered that even on my notebook (which has a wireless card with one IP, and an unused ethernet card) that I see moderately large buffers being read from user space: ifconf: 16384 space ifconf: 2048 space ifconf: 2048 space ifconf: 4095 space This is from a printf of ifc->ifc_len before the loop begins. Robert N M Watson FreeBSD Core Team, TrustedBSD Projects robert_at_fledge.watson.org Principal Research Scientist, McAfee ResearchReceived on Sat Sep 18 2004 - 10:55:35 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:12 UTC