Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 942b631

Browse files
committed
Add missing va_end() calls
found by Coverity
1 parent 6f018c6 commit 942b631

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
#define RETURN_IF_NO_DATA if (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
case ECPGd_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
case ECPGd_nullable:
321329
if (!get_int_item(lineno, var, vartype, 1))
330+
{
331+
va_end(args);
322332
return (false);
333+
}
323334

324335
break;
325336

326337
case ECPGd_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
case ECPGd_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
case ECPGd_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
case ECPGd_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
case ECPGd_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
case ECPGd_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
case ECPGd_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
case ECPGd_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)