[rrd-developers] Re: rrd_graph and rrd_set_error patches for longer filenames

Blair Zajac bzajac at geostaff.com
Wed Oct 13 22:21:55 MEST 1999


You're suggestions are good, however the patch I put together
does what I need for Orca and does improve things.  Please
feel free to submit a patch that does what you suggest.

Blair

Tobias Weingartner wrote:
> 
> On Sunday, October 10, Blair Zajac wrote:
> >
> > I've been running into some problems with pathnames longer than 255
> > characters in rrd_graph.  The following patch fixes these and prevents
> > buffer overflows in rrd_set_error, unless the error is longer than
> > 4096 characters.
> 
> Why stop there?  :-)
> 
> > diff -rc ../rrdtool-1.0.7.0/src/rrd_error.c ./src/rrd_error.c
> > *** ../rrdtool-1.0.7.0/src/rrd_error.c        Fri Aug 27 12:20:05 1999
> > --- ./src/rrd_error.c Sun Oct 10 18:40:24 1999
> > ***************
> > *** 16,28 ****
> >   void
> >   rrd_set_error(char *fmt, ...)
> >   {
> > !     int maxlen = strlen(fmt)*4;
> >       va_list argp;
> >       rrd_clear_error();
> > -     rrd_error = malloc(sizeof(char)*maxlen);
> >       va_start(argp, fmt);
> > !     vsprintf(rrd_error, fmt, argp);
> >       va_end(argp);
> >   }
> 
> This ain't perfect, if vsnprintf() exists, I'd use it...
> 
> > --- 16,29 ----
> >   void
> >   rrd_set_error(char *fmt, ...)
> >   {
> > !     static char buffer[4096];
> >       va_list argp;
> >       rrd_clear_error();
> >       va_start(argp, fmt);
> > !     vsprintf(buffer, fmt, argp);
> >       va_end(argp);
> > +     rrd_error = malloc(sizeof(char)*(strlen(buffer)+1));
> > +     strcpy(rrd_error, buffer);
> >   }
> 
> I fail to see how this will differ much.  Why not just add 4096 to
> the above maxlen item?  Same result, buffer at least 4K, but does not
> solve the buffer overflow potential...
> 
> > diff -rc ../rrdtool-1.0.7.0/src/rrd_graph.c ./src/rrd_graph.c
> > *** ../rrdtool-1.0.7.0/src/rrd_graph.c        Fri Oct  1 12:15:28 1999
> > --- ./src/rrd_graph.c Fri Oct  8 23:22:35 1999
> > ***************
> > *** 180,186 ****
> >
> >       /* configuration of graph */
> >
> > !     char           graphfile[255]; /* filename for graphic */
> >       long           xsize,ysize;    /* graph area size in pixels */
> >       col_trip_t     graph_col[__GRC_END__]; /* real colors for the graph */
> >
> >       char           ylegend[200];   /* legend along the yaxis */
> > --- 180,186 ----
> >
> >       /* configuration of graph */
> >
> > !     char           graphfile[1024]; /* filename for graphic */
> >       long           xsize,ysize;    /* graph area size in pixels */
> >       col_trip_t     graph_col[__GRC_END__]; /* real colors for the graph */
> >
> >       char           ylegend[200];   /* legend along the yaxis */
> 
> Why not use MAXPATHLEN if it exists?  And if not, then think of some
> POSIXLY decent default value for it?  :-)
> 
> --Toby.
> *----------------------------------------------------------------------------*
> | Tobias Weingartner | Email: weingart at cs.ualberta.ca | Nothing here yet     |
> | Apt B 7707-110 St. |--------------------------------| Nor here yet...      |
> | Edmonton, AB       | Unix Guru, Admin, Systems-Dude | Nor here...          |
> | T6G 1G3     ---------------------------------------------------------------|
> | Canada     / %SYSTEM-F-ANARCHISM, The operating system has been overthrown |
> *----------------------------------------------------------------------------*
> 
> --
> * To unsubscribe from the rrd-developers mailing list, send a message with the
>   subject: unsubscribe to rrd-developers-request at list.ee.ethz.ch
-------------- next part --------------
A non-text attachment was scrubbed...
Name: bzajac.vcf
Type: text/x-vcard
Size: 322 bytes
Desc: Card for Blair Zajac
Url : https://lists.oetiker.ch/pipermail/rrd-developers/attachments/19991013/85e8e0af/attachment.vcf 


More information about the rrd-developers mailing list