Hi Scuri, Acccording to Coverity this is a real bug: static void iAttribParse(Ihandle *ih, const char* str) 1463{ 1464 char env_buffer[256]; 1465 char* name=NULL; 1466 char* value=NULL; 1467 char state = 'a'; /* get attribute */ 1468 int end = 0; 1469 1470 env_str = str; 1471 1. Condition true, taking true branch. 7. Condition true, taking true branch. 15. Condition true, taking true branch. 1472 for (;;) 1473 { 2. Switch case value 8. 8. Switch case value 5. 16. Switch case value 5. 1474 switch (iAttribToken(env_buffer)) 1475 { CID 210525: Missing break in switch (MISSING_BREAK) [select issue] 1476 case IUPLEX_TK_END: /* same as IUPLEX_TK_COMMA */ 1477 end = 1; 1478 case IUPLEX_TK_COMMA: 3. Condition name, taking false branch. 1479 if (name) 1480 { CID 210685: Explicit null dereferenced (FORWARD_NULL) [select issue] 1481 IupStoreAttribute(ih, name, value); 1482 free(name); 1483 } 4. Condition end, taking false branch. 1484 if (end) 1485 return; 1486 name = value = NULL; 1487 state = 'a'; 5. Breaking from switch. 1488 break; 1489 1490 case IUPLEX_TK_SET: 1491 state = 'v'; /* get value */ 1492 break; 1493 1494 case IUPLEX_TK_NAME: 9. Condition state == 97, taking true branch. 17. Condition state == 97, taking true branch. 1495 if (state == 'a') 10. alloc_fn: Storage is returned from allocation function iupStrDup. [show details] 11. var_assign: Assigning: name = storage returned from iupStrDup(env_buffer). 12. Falling through to end of if statement. CID 210676 (#1 of 1): Resource leak (RESOURCE_LEAK)18. overwrite_var: Overwriting name in name = iupStrDup(env_buffer) leaks the storage that name points to. 1496 name = iupStrDup(env_buffer); 1497 else 1498 value = env_buffer; 13. Breaking from switch. 1499 break; 1500 } 6. Jumping back to the beginning of the loop. 14. Jumping back to the beginning of the loop. 1501 } 1502}
Following the "conditions", that can actually occur, var name leaks pointer. IHMO I really believe fix this. Best regards, Ranier Vilela ________________________________________ De: Antonio Scuri <antonio.sc...@gmail.com> Enviado: domingo, 26 de maio de 2019 22:08 Para: IUP discussion list. Assunto: Re: [Iup-users] CID 210676 (#1 of 1): Resource leak (RESOURCE_LEAK) The code you added is an unreachable code. The "for" never ends normally, only in the return. Em sáb, 25 de mai de 2019 às 08:28, Ranier VF <ranier_...@hotmail.com<mailto:ranier_...@hotmail.com>> escreveu: Hi, Fix RESOURCE_LEAK at iup_attrib.c --- ..\..\a\src\iup_attrib.c Sat Jan 26 16:02:13 2019 +++ iup_attrib.c Sat May 25 08:25:17 2019 @@ -1499,6 +1499,11 @@ break; } } + if (name) + { + IupStoreAttribute(ih, name, value); + free(name); + } } Ihandle* IupSetAttributes(Ihandle *ih, const char* str) Best regards. Ranier Vilela_______________________________________________ Iup-users mailing list Iup-users@lists.sourceforge.net<mailto:Iup-users@lists.sourceforge.net> https://lists.sourceforge.net/lists/listinfo/iup-users _______________________________________________ Iup-users mailing list Iup-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/iup-users