Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit942b631

Browse files
committed
Add missing va_end() calls
found by Coverity
1 parent6f018c6 commit942b631

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

‎src/interfaces/ecpg/ecpglib/descriptor.c

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@ get_char_item(int lineno, void *var, enum ECPGttype vartype, char *value, int va
229229

230230
#defineRETURN_IF_NO_DATAif (ntuples < 1) \
231231
{ \
232+
va_end(args); \
232233
ecpg_raise(lineno, ECPG_NOT_FOUND, ECPG_SQLSTATE_NO_DATA, NULL); \
233234
return (false); \
234235
}
@@ -248,13 +249,17 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...)
248249
ecpg_init_sqlca(sqlca);
249250
ECPGresult=ecpg_result_by_descriptor(lineno,desc_name);
250251
if (!ECPGresult)
252+
{
253+
va_end(args);
251254
return (false);
255+
}
252256

253257
ntuples=PQntuples(ECPGresult);
254258

255259
if (index<1||index>PQnfields(ECPGresult))
256260
{
257261
ecpg_raise(lineno,ECPG_INVALID_DESCRIPTOR_INDEX,ECPG_SQLSTATE_INVALID_DESCRIPTOR_INDEX,NULL);
262+
va_end(args);
258263
return (false);
259264
}
260265

@@ -312,68 +317,98 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...)
312317

313318
caseECPGd_name:
314319
if (!get_char_item(lineno,var,vartype,PQfname(ECPGresult,index),varcharsize))
320+
{
321+
va_end(args);
315322
return (false);
323+
}
316324

317325
ecpg_log("ECPGget_desc: NAME = %s\n",PQfname(ECPGresult,index));
318326
break;
319327

320328
caseECPGd_nullable:
321329
if (!get_int_item(lineno,var,vartype,1))
330+
{
331+
va_end(args);
322332
return (false);
333+
}
323334

324335
break;
325336

326337
caseECPGd_key_member:
327338
if (!get_int_item(lineno,var,vartype,0))
339+
{
340+
va_end(args);
328341
return (false);
342+
}
329343

330344
break;
331345

332346
caseECPGd_scale:
333347
if (!get_int_item(lineno,var,vartype, (PQfmod(ECPGresult,index)-VARHDRSZ)&0xffff))
348+
{
349+
va_end(args);
334350
return (false);
351+
}
335352

336353
ecpg_log("ECPGget_desc: SCALE = %d\n", (PQfmod(ECPGresult,index)-VARHDRSZ)&0xffff);
337354
break;
338355

339356
caseECPGd_precision:
340357
if (!get_int_item(lineno,var,vartype,PQfmod(ECPGresult,index) >>16))
358+
{
359+
va_end(args);
341360
return (false);
361+
}
342362

343363
ecpg_log("ECPGget_desc: PRECISION = %d\n",PQfmod(ECPGresult,index) >>16);
344364
break;
345365

346366
caseECPGd_octet:
347367
if (!get_int_item(lineno,var,vartype,PQfsize(ECPGresult,index)))
368+
{
369+
va_end(args);
348370
return (false);
371+
}
349372

350373
ecpg_log("ECPGget_desc: OCTET_LENGTH = %d\n",PQfsize(ECPGresult,index));
351374
break;
352375

353376
caseECPGd_length:
354377
if (!get_int_item(lineno,var,vartype,PQfmod(ECPGresult,index)-VARHDRSZ))
378+
{
379+
va_end(args);
355380
return (false);
381+
}
356382

357383
ecpg_log("ECPGget_desc: LENGTH = %d\n",PQfmod(ECPGresult,index)-VARHDRSZ);
358384
break;
359385

360386
caseECPGd_type:
361387
if (!get_int_item(lineno,var,vartype,ecpg_dynamic_type(PQftype(ECPGresult,index))))
388+
{
389+
va_end(args);
362390
return (false);
391+
}
363392

364393
ecpg_log("ECPGget_desc: TYPE = %d\n",ecpg_dynamic_type(PQftype(ECPGresult,index)));
365394
break;
366395

367396
caseECPGd_di_code:
368397
if (!get_int_item(lineno,var,vartype,ecpg_dynamic_type_DDT(PQftype(ECPGresult,index))))
398+
{
399+
va_end(args);
369400
return (false);
401+
}
370402

371403
ecpg_log("ECPGget_desc: TYPE = %d\n",ecpg_dynamic_type_DDT(PQftype(ECPGresult,index)));
372404
break;
373405

374406
caseECPGd_cardinality:
375407
if (!get_int_item(lineno,var,vartype,PQntuples(ECPGresult)))
408+
{
409+
va_end(args);
376410
return (false);
411+
}
377412

378413
ecpg_log("ECPGget_desc: CARDINALITY = %d\n",PQntuples(ECPGresult));
379414
break;
@@ -391,6 +426,7 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...)
391426
ecpg_log("ECPGget_desc on line %d: incorrect number of matches; %d don't fit into array of %ld\n",
392427
lineno,ntuples,arrsize);
393428
ecpg_raise(lineno,ECPG_TOO_MANY_MATCHES,ECPG_SQLSTATE_CARDINALITY_VIOLATION,NULL);
429+
va_end(args);
394430
return false;
395431
}
396432
/* allocate storage if needed */
@@ -399,7 +435,10 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...)
399435
void*mem= (void*)ecpg_alloc(offset*ntuples,lineno);
400436

401437
if (!mem)
438+
{
439+
va_end(args);
402440
return false;
441+
}
403442
*(void**)var=mem;
404443
ecpg_add_mem(mem,lineno);
405444
var=mem;
@@ -408,7 +447,10 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...)
408447
for (act_tuple=0;act_tuple<ntuples;act_tuple++)
409448
{
410449
if (!get_int_item(lineno,var,vartype,PQgetlength(ECPGresult,act_tuple,index)))
450+
{
451+
va_end(args);
411452
return (false);
453+
}
412454
var= (char*)var+offset;
413455
ecpg_log("ECPGget_desc: RETURNED[%d] = %d\n",act_tuple,PQgetlength(ECPGresult,act_tuple,index));
414456
}
@@ -417,6 +459,7 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...)
417459
default:
418460
snprintf(type_str,sizeof(type_str),"%d",type);
419461
ecpg_raise(lineno,ECPG_UNKNOWN_DESCRIPTOR_ITEM,ECPG_SQLSTATE_ECPG_INTERNAL_ERROR,type_str);
462+
va_end(args);
420463
return (false);
421464
}
422465

@@ -460,6 +503,7 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...)
460503
ecpg_log("ECPGget_desc on line %d: incorrect number of matches (indicator); %d don't fit into array of %ld\n",
461504
lineno,ntuples,data_var.ind_arrsize);
462505
ecpg_raise(lineno,ECPG_TOO_MANY_MATCHES,ECPG_SQLSTATE_CARDINALITY_VIOLATION,NULL);
506+
va_end(args);
463507
return false;
464508
}
465509

@@ -469,7 +513,10 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...)
469513
void*mem= (void*)ecpg_alloc(data_var.ind_offset*ntuples,lineno);
470514

471515
if (!mem)
516+
{
517+
va_end(args);
472518
return false;
519+
}
473520
*(void**)data_var.ind_pointer=mem;
474521
ecpg_add_mem(mem,lineno);
475522
data_var.ind_value=mem;
@@ -478,12 +525,16 @@ ECPGget_desc(int lineno, const char *desc_name, int index,...)
478525
for (act_tuple=0;act_tuple<ntuples;act_tuple++)
479526
{
480527
if (!get_int_item(lineno,data_var.ind_value,data_var.ind_type,-PQgetisnull(ECPGresult,act_tuple,index)))
528+
{
529+
va_end(args);
481530
return (false);
531+
}
482532
data_var.ind_value= (char*)data_var.ind_value+data_var.ind_offset;
483533
ecpg_log("ECPGget_desc: INDICATOR[%d] = %d\n",act_tuple,-PQgetisnull(ECPGresult,act_tuple,index));
484534
}
485535
}
486536
sqlca->sqlerrd[2]=ntuples;
537+
va_end(args);
487538
return (true);
488539
}
489540

@@ -575,6 +626,7 @@ ECPGset_desc(int lineno, const char *desc_name, int index,...)
575626
if (!ecpg_store_input(lineno, true,var,&tobeinserted, false))
576627
{
577628
ecpg_free(var);
629+
va_end(args);
578630
return false;
579631
}
580632

@@ -612,11 +664,13 @@ ECPGset_desc(int lineno, const char *desc_name, int index,...)
612664
snprintf(type_str,sizeof(type_str),"%d",itemtype);
613665
ecpg_raise(lineno,ECPG_UNKNOWN_DESCRIPTOR_ITEM,ECPG_SQLSTATE_ECPG_INTERNAL_ERROR,type_str);
614666
ecpg_free(var);
667+
va_end(args);
615668
return false;
616669
}
617670
}
618671
}
619672
ecpg_free(var);
673+
va_end(args);
620674

621675
return true;
622676
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp