limits [was: [cvs] ... token.c]
David Relson <[email protected]>
| Newsgroups | gmane.mail.bogofilter.devel |
|---|---|
| Organization | Osage Software Systems, Inc. |
| Message-ID | <[email protected]> |
On Wed, 06 Apr 2005 00:31:31 +0200 Matthias Andree wrote: > David Relson <[email protected]> writes: > > > + uint p = (prefix == NULL) ? 0 : prefix->leng; > > + uint l = leng + p; > > + > > + if (l >= token_size) > > + l = token_size - p; > > + > > + token->leng = l; > > + > > + /* copy prefix, if there is one */ > > + if (prefix != NULL) > > + memcpy(token->text, prefix->text, p); > > + > > + memcpy(token->text + p, text, l-p); /* include nul terminator */ > > + token->text[token->leng] = '\0'; /* ensure nul termination */ > > What is the upper limit here? > > IOW, against what limit does the actual prefix length count? > > Do we limit against MAXTOKENLEN or something a lot larger? prefix->leng is the length of the current prefix. At present the prefixes are: "to:", "from:", "rtrn:", "subj:", "rcvd:", "head:", and "mime:" and the other relevant code is: #define MAXTOKENLEN 30 #define MAX_PREFIX_LEN 5 /* maximim length of prefix */ #define MSG_COUNT_PADDING 2 * 10 /* space for 2 10-digit numbers */ byte yylval_text[MAXTOKENLEN + MAX_PREFIX_LEN + MSG_COUNT_PADDING + D]; static word_t yylval = { 0, yylval_text }; The limit for yylval is sizeof(yylval_text) which computes to 55. When we get serious about unicode and iconv, we'll need to make some changes. At present, each character of a message takes 1 byte of storage, so the single MAXTOKENLEN value is sufficient. With unicode we'll need different counts for characters and storage, for example MAXTOKENCHARS and MAXTOKENBYTES. _______________________________________________ Bogofilter-dev mailing list [email protected] http://www.bogofilter.org/mailman/listinfo/bogofilter-dev