Maxime Henrion wrote:
[...]
> > > > - There is a TOK_STRING_SIZE macro which defines the size of the the
> > > >   db_tok_string variable.  Use it instead of declaring several 1k
> > > >   variables on the stack.
> > > 
> > > It is not token buffers - it is buffers for sysctl data interchange,
> > > const 1024 changed to SYSCTL_DATA_BUFSIZE define. 
> 
> Yes, that's better, but you still do a strcpy() which assumes that
> SYSCTL_DATA_BUFSIZE >= TOK_STRING_SIZE, and there are still quite big
> variables on the stack, which can be a problem if someone invokes ddb
> while deep in the stack.
> 
> What I meant in my previous mail is that you could malloc() these
> objects instead of putting them on the stack.  Also, you don't need
> buffers that big since the size you need is bounded at max(sizeof(int),
> TOK_STRING_SIZE), which is likely to be TOK_STRING_SIZE :-).

To be even more precise, you could just have an int and a char * as
local variables, use the int in the tNUMBER case and malloc() the char *
to TOK_STRING_SIZE in the tIDENT case.

Cheers,
Maxime

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to