Yes, rare but it could happen.
Fixed and committed to SVN.
Best,
Scuri
2018-01-19 15:01 GMT-02:00 Ranier VF <ranier_...@hotmail.com>:
> Hi,
> Well can be rarely but.
>
> If afunc->system_default is NOT NULL and afunc->default_value is NULL,
> and afunc->call_global_default IS NOT NULL:
>
> if ((!iupStrEqualNoCase(afunc->default_value, afunc->system_default)) ||
>
> take false branch, and
>
> (afunc->call_global_default && iupGlobalDefaultColorChanged(
> afunc->default_value)))
>
> take true branch,
>
> iupGlobalDefaultColorChange is called with afunc->default_value=NULL.
>
> int iupGlobalDefaultColorChanged(const char *name)
> 51{
> 52 char str[50] = "_IUP_USER_DEFAULT_";
> 1. deref_parm_in_call: Function strcat dereferences name.
> 53 strcat(str, name)
>
> Result segmentation fault, rare, but possible.
>
> Best.
> Ranier
> ________________________________________
> De: Antonio Scuri <antonio.sc...@gmail.com>
> Enviado: sexta-feira, 19 de janeiro de 2018 10:54
> Para: IUP discussion list.
> Assunto: Re: [Iup-users] CID 210573 (#1 of 1): Dereference after null
> check (FORWARD_NULL)
>
> The first if tests for:
>
> (afunc->default_value || afunc->system_default) &&
>
> So default_value can be NULL if system_default is not. Or they are equal
> and NOT NULL.
>
> The second if tests for:
>
> if ((!iupStrEqualNoCase(afunc->default_value, afunc->system_default)) ||
>
> If they are not equal OR
>
> then they are equal and not NULL at:
>
> (afunc->call_global_default && iupGlobalDefaultColorChanged(
> afunc->default_value)))
>
> There is no need for " && afunc->default_value"
>
> Best,
> Scuri
>
>
> 2018-01-19 0:06 GMT-02:00 Ranier VF <ranier_...@hotmail.com<mailto:
> ranier_...@hotmail.com>>:
> Hi,
> Issue found by Coverity Scan.
> CID 210573 (#1 of 1): Dereference after null check (FORWARD_NULL)
> var_deref_model: Passing null pointer afunc->default_value to
> iupGlobalDefaultColorChanged, which dereferences it.
>
> --- a\src\iup_classattrib.c Fri Oct 14 13:48:50 2016
> +++ b\src\iup_classattrib.c Fri Jan 19 00:01:03 2018
> @@ -990,7 +990,8 @@
> !(afunc->flags & IUPAF_HAS_ID))
> {
> if ((!iupStrEqualNoCase(afunc->default_value,
> afunc->system_default)) ||
> - (afunc->call_global_default && iupGlobalDefaultColorChanged(
> afunc->default_value)))
> + (afunc->call_global_default && afunc->default_value &&
> + iupGlobalDefaultColorChanged(afunc->default_value)))
> {
> if ((!ih->handle && (afunc->flags & IUPAF_NOT_MAPPED)) ||
> (ih->handle && !(afunc->flags & IUPAF_NOT_MAPPED)))
>
> Best.
> Ranier
> ------------------------------------------------------------
> ------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Iup-users mailing list
> Iup-users@lists.sourceforge.net<mailto:Iup-users@lists.sourceforge.net>
> https://lists.sourceforge.net/lists/listinfo/iup-users
>
>
>
> ------------------------------------------------------------
> ------------------
> Check out the vibrant tech community on one of the world's most
> engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> _______________________________________________
> Iup-users mailing list
> Iup-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/iup-users
>
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Iup-users mailing list
Iup-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/iup-users