X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Ftools.c;h=b1e95fcc46c8cb4899863852d3c54b245413bb16;hb=119f5ee3d14919e18afc159074295c51e5f911ba;hp=aa78e3544be39c931c30aaa02f83ad3ee4ffe99d;hpb=63cb2f4bcd0510c1c5052d477095c25e034a960e;p=citadel.git diff --git a/citadel/tools.c b/citadel/tools.c index aa78e3544..b1e95fcc4 100644 --- a/citadel/tools.c +++ b/citadel/tools.c @@ -94,11 +94,12 @@ int num_tokens(const char *source, char tok) { /* * extract_token() - a string tokenizer */ -void extract_token(char *dest, const char *source, int parmnum, char separator) +void extract_token(char *dest, const char *source, int parmnum, char separator, int maxlen) { char *d; /* dest */ const char *s; /* source */ int count = 0; + int len = 0; strcpy(dest, ""); @@ -117,7 +118,7 @@ void extract_token(char *dest, const char *source, int parmnum, char separator) } if (!s) return; /* Parameter not found */ - for (d = dest; *s && *s != separator; s++, d++) { + for (d = dest; *s && *s != separator && ++len= 2) { - extract_token(histr, setstr, 1, ':'); + extract_token(histr, setstr, 1, ':', sizeof histr); if (!strcmp(histr, "*")) { snprintf(histr, sizeof histr, "%ld", LONG_MAX); }