From: František Dvořák Date: Tue, 9 Mar 2010 12:46:07 +0000 (+0000) Subject: Rare crash for notif change in glite-lb-notify. X-Git-Tag: glite-lb-harvester_R_1_0_0_1~2 X-Git-Url: http://scientific.zcu.cz/git/?a=commitdiff_plain;h=f74a80fc8ffcfccc13ab1934eba0ebb51ddb7c50;p=jra1mw.git Rare crash for notif change in glite-lb-notify. --- diff --git a/org.glite.lb.client/src/notify.c b/org.glite.lb.client/src/notify.c index 913939d..9312c91 100644 --- a/org.glite.lb.client/src/notify.c +++ b/org.glite.lb.client/src/notify.c @@ -117,12 +117,11 @@ int main(int argc,char **argv) edg_wll_JobStatCode single_code; int statno, stdelims, sti; - - - conditions = (edg_wll_QueryRec **)calloc(7,sizeof(edg_wll_QueryRec *)); +#define MAX_NEW_CONDS 7 + conditions = (edg_wll_QueryRec **)calloc(MAX_NEW_CONDS + 1,sizeof(edg_wll_QueryRec *)); conditions[0] = (edg_wll_QueryRec *)calloc(2,sizeof(edg_wll_QueryRec)); - while ((c = getopt_long(argc-1,argv+1,"j:o:v:n:s:a:t:f:cOS:",long_options,&option_index)) > 0) switch (c) { + while ((c = getopt_long(argc-1,argv+1,"j:o:v:n:s:a:t:f:cOS:",long_options,&option_index)) > 0) { switch (c) { case 'j': conditions[i] = (edg_wll_QueryRec *)calloc(2,sizeof(edg_wll_QueryRec)); conditions[i][0].attr = EDG_WLL_QUERY_ATTR_JOBID; @@ -198,7 +197,7 @@ int main(int argc,char **argv) for (sti = 0; sti < strlen(statelist); sti++) if (statelist[sti] == ',') stdelims++; conditions[i] = (edg_wll_QueryRec *)calloc(stdelims+2,sizeof(edg_wll_QueryRec)); - while(single = strtok(statelist, ",")) { + while((single = strtok(statelist, ","))) { single_code = edg_wll_StringToStat(single); if (single_code != -1) { conditions[i][statno].attr = EDG_WLL_QUERY_ATTR_STATUS; @@ -216,6 +215,10 @@ int main(int argc,char **argv) break; default: usage("new"); return EX_USAGE; + } + if (i > MAX_NEW_CONDS) { + usage("new"); return EX_USAGE; + } } if ( !edg_wll_NotifNew(ctx, @@ -422,14 +425,16 @@ receive_err: } conditions = (edg_wll_QueryRec **)calloc(2,sizeof(edg_wll_QueryRec *)); - conditions[0] = (edg_wll_QueryRec *)calloc(2,sizeof(edg_wll_QueryRec)); - conditions[1] = (edg_wll_QueryRec *)calloc(3, sizeof(edg_wll_QueryRec)); + conditions[0] = (edg_wll_QueryRec *)calloc(2,sizeof(edg_wll_QueryRec)); conditions[0][0].attr = EDG_WLL_QUERY_ATTR_JOBID; conditions[0][0].op = EDG_WLL_QUERY_OP_EQUAL; conditions[0][0].value.j = jid; - /*conditions[1][0].attr = EDG_WLL_QUERY_ATTR_STATUS; + conditions[1] = NULL; + + /*conditions[1] = (edg_wll_QueryRec *)calloc(3, sizeof(edg_wll_QueryRec)); + conditions[1][0].attr = EDG_WLL_QUERY_ATTR_STATUS; conditions[1][0].op = EDG_WLL_QUERY_OP_EQUAL; conditions[1][0].value.i = EDG_WLL_JOB_DONE;