X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_restore.c;h=b283f9128594f21f27bb83c70112cb7776d88abb;hb=818549a636c390fb4a8390a7e2195a52293cd56b;hp=3907b930cf26d45887d72316d544adf21a213be4;hpb=734468bcc23497c7eba0deba87c92aa219fd46d1;p=rrdtool.git diff --git a/src/rrd_restore.c b/src/rrd_restore.c index 3907b93..b283f91 100644 --- a/src/rrd_restore.c +++ b/src/rrd_restore.c @@ -1,5 +1,5 @@ /***************************************************************************** - * RRDtool 1.2.17 Copyright by Tobi Oetiker, 1997-2006 + * RRDtool 1.2.23 Copyright by Tobi Oetiker, 1997-2007 ***************************************************************************** * rrd_restore.c creates new rrd from data dumped by rrd_dump.c *****************************************************************************/ @@ -22,7 +22,7 @@ int skipxml(char **); int eat_tag(char **, char *); int read_tag(char **, char *, char *, void *); int xml2rrd(char*, rrd_t*, char); -int rrd_write(char *, rrd_t *, char); +int rrd_creat(char *, rrd_t *, char); void parse_patch1028_RRA_params(char **buf, rrd_t *rrd, int rra_index); void parse_patch1028_CDP_params(char **buf, rrd_t *rrd, int rra_index, int ds_index); void parse_FAILURES_history(char **buf, rrd_t *rrd, int rra_index, int ds_index); @@ -64,7 +64,9 @@ int skipxml(char **buf){ } int skip(char **buf){ - char *ptr; + char *ptr; + if ((buf == NULL) || (*buf == NULL)) + return -1; ptr=(*buf); do { (*buf)=ptr; @@ -237,7 +239,7 @@ int xml2rrd(char* buf, rrd_t* rrd, char rc){ if((rrd->cdp_prep = rrd_realloc(rrd->cdp_prep, rrd->stat_head->rra_cnt *rrd->stat_head->ds_cnt*sizeof(cdp_prep_t)))==NULL){ - rrd_set_error("allocating cdp_prep"); return -1; } + rrd_set_error("allocating cdp_prep"); return -1; } memset(&(rrd->cdp_prep[rrd->stat_head->ds_cnt*(rrd->stat_head->rra_cnt-1)]), 0, rrd->stat_head->ds_cnt*sizeof(cdp_prep_t)); @@ -254,7 +256,10 @@ int xml2rrd(char* buf, rrd_t* rrd, char rc){ read_tag(&ptr2, "xff","%lf", &(rrd->rra_def[rra_index].par[RRA_cdp_xff_val].u_val)); } else { - eat_tag(&ptr2, "params"); + if (eat_tag(&ptr2, "params") != 1) { + rrd_set_error("could not find params tag to eat and skip"); + return -1; + } skip(&ptr2); /* backwards compatibility w/ old patch */ if (strncmp(ptr2, "",7) == 0) { @@ -456,7 +461,7 @@ int xml2rrd(char* buf, rrd_t* rrd, char rc){ /* create and empty rrd file according to the specs given */ int -rrd_write(char *file_name, rrd_t *rrd, char force_overwrite) +rrd_creat(char *file_name, rrd_t *rrd, char force_overwrite) { unsigned long i,ii,val_cnt; FILE *rrd_file=NULL; @@ -579,7 +584,7 @@ rrd_restore(int argc, char **argv) free(buf); - if(rrd_write(argv[optind+1],&rrd,force_overwrite)==-1){ + if(rrd_creat(argv[optind+1],&rrd,force_overwrite)==-1){ rrd_free(&rrd); return -1; };