Hi Dmitry, Thanks for the patch, i've just committed it to the CVS:
http://www.mail-archive.com/[email protected]/msg00351.html Took also a moment to do similar kind of work to trim_spaces() and trim_all_spaces() functions. The previous approach worked fine (or almost) but definitely agree it's a bit gambling. Cheers, Paolo On Tue, Oct 19, 2010 at 03:23:36AM +0400, Dmitry Koplovich wrote: > Hi, > > Recently I was testing pretagging and found a strange thing just like > previosly described in this list > (http://www.pmacct.net/mailman/private/pmacct-discussion/2009-September/001309.html): > libpcap-style filters sometimes didn't work because nfacctd reported > syntax errors in pretag.map, although filters were obviously valid. So > I looked into sources and found a bug in utils.c, function > strip_quotes(): strcpy() was used with the same source and destination > strings. > > This bug caused corruption of 'quoted' config strings such as filter > attribute in pretag.map. I wonder how people managed to use pretag.map > in production without getting syntax errors :). > > Regards, > Dmitry Koplovich > > > Patch: > > diff -urN pmacct-0.12.3/src/util.c pmacct-0.12.3.bugfix/src/util.c > --- pmacct-0.12.3/src/util.c<-->2010-07-01 15:24:43.000000000 +0400 > +++ pmacct-0.12.3.bugfix/src/util.c>2010-10-19 02:53:50.000000000 +0400 > @@ -212,20 +212,29 @@ > . > void strip_quotes(char *buf) > { > - char *ptr; > + char *ptr, *tmp_buf; > int i = 0, len; > . > - ptr = buf; > len = strlen(buf); > . > - /* stripping all quote marks */ > + tmp_buf = (char *)malloc(len + 1); > + if (tmp_buf == NULL) { > + Log(LOG_ERR, "ERROR: strip_quotes: malloc()\n"); > + return; > + } > + ptr = buf; > +.. > + /* stripping all quote marks using a temporary buffer > + * to avoid string corruption by strcpy() */ > while (i <= len) { > if (ptr[i] == '\'') { > - strcpy(&buf[i], &ptr[i+1]); > + strcpy(tmp_buf, &ptr[i+1]); > + strcpy(&buf[i], tmp_buf); > len--; > } > else i++; > } > + free(tmp_buf); > } > . > int isblankline(char *line) > > _______________________________________________ > pmacct-discussion mailing list > http://www.pmacct.net/#mailinglists _______________________________________________ pmacct-discussion mailing list http://www.pmacct.net/#mailinglists
