X-Git-Url: https://git.octo.it/?p=rrdtool.git;a=blobdiff_plain;f=src%2Frrd_graph.c;h=94616cb44f44cf5f79ec674e440ee6abd3db2a15;hp=b8ef6b7411aa19149ea1ddda3ad637cf58d585d6;hb=586cc1f6f770892aa24f08e38a6c14c2c47ee560;hpb=355e29120ccb981bab8779dab297d0302b7524ec diff --git a/src/rrd_graph.c b/src/rrd_graph.c index b8ef6b7..94616cb 100644 --- a/src/rrd_graph.c +++ b/src/rrd_graph.c @@ -1426,6 +1426,8 @@ time_t find_first_time( struct tm tm; localtime_r(&start, &tm); + /* let mktime figure this dst on its own */ + tm.tm_isdst = -1; switch (baseint) { case TMT_SECOND: @@ -1494,6 +1496,8 @@ time_t find_next_time( time_t madetime; localtime_r(¤t, &tm); + /* let mktime figure this dst on its own */ + tm.tm_isdst = -1; int limit = 2; switch (baseint) { @@ -1672,14 +1676,9 @@ int print_calc( im->gdes[i].format); return -1; } -#ifdef HAVE_SNPRINTF snprintf(im->gdes[i].legend, FMT_LEG_LEN - 2, im->gdes[i].format, printval, si_symb); -#else - sprintf(im->gdes[i].legend, - im->gdes[i].format, printval, si_symb); -#endif } graphelement = 1; } @@ -1718,6 +1717,9 @@ int print_calc( ("STACK should already be turned into LINE or AREA here"); return -1; break; + case GF_XAXIS: + case GF_YAXIS: + break; } } return graphelement; @@ -1738,7 +1740,6 @@ int leg_place( int leg_c = 0; double leg_x = border; int leg_y = 0; //im->yimg; - int leg_y_prev = 0; // im->yimg; int leg_cc; double glue = 0; int i, ii, mark = 0; @@ -1764,7 +1765,7 @@ int leg_place( for (i = 0; i < im->gdes_c; i++) { char prt_fctn; /*special printfunctions */ if(calc_width){ - strcpy(saved_legend, im->gdes[i].legend); + strncpy(saved_legend, im->gdes[i].legend, sizeof saved_legend); } fill_last = fill; @@ -1914,7 +1915,6 @@ int leg_place( +(double)legspace[ii] + glue; } - leg_y_prev = leg_y; if (leg_x > border || prt_fctn == 's') leg_y += im->text_prop[TEXT_PROP_LEGEND].size * 1.8; if (prt_fctn == 's') @@ -1931,7 +1931,7 @@ int leg_place( } if(calc_width){ - strcpy(im->gdes[i].legend, saved_legend); + strncpy(im->gdes[i].legend, saved_legend, sizeof im->gdes[0].legend); } } @@ -2014,7 +2014,7 @@ int calc_horizontal_grid( if (im->unitslength < len + 2) im->unitslength = len + 2; - sprintf(im->ygrid_scale.labfmt, + snprintf(im->ygrid_scale.labfmt, sizeof im->ygrid_scale.labfmt, "%%%d.%df%s", len, -fractionals, (im->symbol != ' ' ? " %c" : "")); } else { @@ -2022,7 +2022,7 @@ int calc_horizontal_grid( if (im->unitslength < len + 2) im->unitslength = len + 2; - sprintf(im->ygrid_scale.labfmt, + snprintf(im->ygrid_scale.labfmt, sizeof im->ygrid_scale.labfmt, "%%%d.0f%s", len, (im->symbol != ' ' ? " %c" : "")); } } else { /* classic rrd grid */ @@ -2086,15 +2086,15 @@ int draw_horizontal_grid( && (YN < im->yorigin - im->ysize || YN > im->yorigin))) { if (im->symbol == ' ') { if (im->extra_flags & ALTYGRID) { - sprintf(graph_label, + snprintf(graph_label, sizeof graph_label, im->ygrid_scale.labfmt, scaledstep * (double) i); } else { if (MaxY < 10) { - sprintf(graph_label, "%4.1f", + snprintf(graph_label, sizeof graph_label, "%4.1f", scaledstep * (double) i); } else { - sprintf(graph_label, "%4.0f", + snprintf(graph_label, sizeof graph_label, "%4.0f", scaledstep * (double) i); } } @@ -2102,15 +2102,15 @@ int draw_horizontal_grid( char sisym = (i == 0 ? ' ' : im->symbol); if (im->extra_flags & ALTYGRID) { - sprintf(graph_label, + snprintf(graph_label, sizeof graph_label, im->ygrid_scale.labfmt, scaledstep * (double) i, sisym); } else { if (MaxY < 10) { - sprintf(graph_label, "%4.1f %c", + snprintf(graph_label, sizeof graph_label, "%4.1f %c", scaledstep * (double) i, sisym); } else { - sprintf(graph_label, "%4.0f %c", + snprintf(graph_label, sizeof graph_label, "%4.0f %c", scaledstep * (double) i, sisym); } } @@ -2127,13 +2127,13 @@ int draw_horizontal_grid( sval /= second_axis_magfact; if(MaxY < 10) { - sprintf(graph_label_right,"%5.1f %s",sval,second_axis_symb); + snprintf(graph_label_right, sizeof graph_label_right, "%5.1f %s",sval,second_axis_symb); } else { - sprintf(graph_label_right,"%5.0f %s",sval,second_axis_symb); + snprintf(graph_label_right, sizeof graph_label_right, "%5.0f %s",sval,second_axis_symb); } } else { - sprintf(graph_label_right,im->second_axis_format,sval); + snprintf(graph_label_right, sizeof graph_label_right, im->second_axis_format,sval,""); } gfx_text ( im, X1+7, Y0, @@ -2319,9 +2319,9 @@ int horizontal_log_grid( symbol = si_symbol[scale + si_symbcenter]; else symbol = '?'; - sprintf(graph_label, "%3.0f %c", pvalue, symbol); + snprintf(graph_label, sizeof graph_label, "%3.0f %c", pvalue, symbol); } else { - sprintf(graph_label, "%3.0e", value); + snprintf(graph_label, sizeof graph_label, "%3.0e", value); } if (im->second_axis_scale != 0){ char graph_label_right[100]; @@ -2331,14 +2331,14 @@ int horizontal_log_grid( double mfac = 1; char *symb = ""; auto_scale(im,&sval,&symb,&mfac); - sprintf(graph_label_right,"%4.0f %s", sval,symb); + snprintf(graph_label_right, sizeof graph_label_right, "%4.0f %s", sval,symb); } else { - sprintf(graph_label_right,"%3.0e", sval); + snprintf(graph_label_right, sizeof graph_label_right, "%3.0e", sval); } } else { - sprintf(graph_label_right,im->second_axis_format,sval,""); + snprintf(graph_label_right, sizeof graph_label_right, im->second_axis_format,sval,""); } gfx_text ( im, @@ -3427,6 +3427,8 @@ int graph_paint_timestring( case GF_VRULE: case GF_XPORT: case GF_SHIFT: + case GF_XAXIS: + case GF_YAXIS: break; case GF_TICK: for (ii = 0; ii < im->xsize; ii++) { @@ -3945,6 +3947,8 @@ int gdes_alloc( return -1; } + /* set to zero */ + memset(&(im->gdes[im->gdes_c - 1]),0,sizeof(graph_desc_t)); im->gdes[im->gdes_c - 1].step = im->step; im->gdes[im->gdes_c - 1].step_orig = im->step; @@ -4040,9 +4044,7 @@ int rrd_graph( return 0; } /* imginfo goes to position 0 in the prdata array */ - (*prdata)[prlines - 1] = (char*)malloc((strlen(walker->value.u_str) - + 2) * sizeof(char)); - strcpy((*prdata)[prlines - 1], walker->value.u_str); + (*prdata)[prlines - 1] = strdup(walker->value.u_str); (*prdata)[prlines] = NULL; } /* skip anything else */ @@ -4070,10 +4072,8 @@ int rrd_graph( rrd_set_error("realloc prdata"); return 0; } - (*prdata)[prlines - 1] = (char*)malloc((strlen(walker->value.u_str) - + 2) * sizeof(char)); + (*prdata)[prlines - 1] = strdup(walker->value.u_str); (*prdata)[prlines] = NULL; - strcpy((*prdata)[prlines - 1], walker->value.u_str); } else if (strcmp(walker->key, "image") == 0) { if ( fwrite(walker->value.u_blo.ptr, walker->value.u_blo.size, 1, (stream ? stream : stdout)) == 0 && ferror(stream ? stream : stdout)){