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