app, libgimp, pdb: make an early check on parasite name.

Let's make sure we won't trigger CRITICALs on core from a plug-in.
This commit is contained in:
Jehan 2025-10-28 16:17:16 +01:00
parent 95d580aa3a
commit 578aee8c62
6 changed files with 44 additions and 12 deletions

View file

@ -141,7 +141,10 @@ detach_parasite_invoker (GimpProcedure *procedure,
if (success)
{
gimp_parasite_detach (gimp, name);
if (name && strlen (name) > 0)
gimp_parasite_detach (gimp, name);
else
success = FALSE;
}
return gimp_procedure_get_return_values (procedure, success,
@ -333,7 +336,9 @@ register_gimp_procs (GimpPDB *pdb)
"gimp-detach-parasite");
gimp_procedure_set_static_help (procedure,
"Removes a global parasite.",
"This procedure detaches a global parasite from. It has no return values.",
"This procedure detaches a global parasite.\n"
"\n"
"It will return %FALSE if @name is invalid (%NULL or empty string) and %TRUE otherwise (even if there was no parasite removed, because no parasite was named like this).",
NULL);
gimp_procedure_set_static_attribution (procedure,
"Jay Cox",

View file

@ -2911,7 +2911,10 @@ image_detach_parasite_invoker (GimpProcedure *procedure,
if (success)
{
gimp_image_parasite_detach (image, name, TRUE);
if (name && strlen (name) > 0)
gimp_image_parasite_detach (image, name, TRUE);
else
success = FALSE;
}
return gimp_procedure_get_return_values (procedure, success,
@ -5732,7 +5735,9 @@ register_image_procs (GimpPDB *pdb)
"gimp-image-detach-parasite");
gimp_procedure_set_static_help (procedure,
"Removes a parasite from an image.",
"This procedure detaches a parasite from an image. It has no return values.",
"This procedure detaches a parasite from an image.\n"
"\n"
"It will return %FALSE if @name is invalid (%NULL or empty string) and %TRUE otherwise (even if there was no parasite removed, because no parasite was named like this).",
NULL);
gimp_procedure_set_static_attribution (procedure,
"Jay Cox",

View file

@ -149,8 +149,11 @@ gimp_attach_parasite (const GimpParasite *parasite)
*
* Removes a global parasite.
*
* This procedure detaches a global parasite from. It has no return
* values.
* This procedure detaches a global parasite.
*
* It will return %FALSE if @name is invalid (%NULL or empty string)
* and %TRUE otherwise (even if there was no parasite removed, because
* no parasite was named like this).
*
* Returns: TRUE on success.
*

View file

@ -3427,8 +3427,11 @@ gimp_image_attach_parasite (GimpImage *image,
*
* Removes a parasite from an image.
*
* This procedure detaches a parasite from an image. It has no return
* values.
* This procedure detaches a parasite from an image.
*
* It will return %FALSE if @name is invalid (%NULL or empty string)
* and %TRUE otherwise (even if there was no parasite removed, because
* no parasite was named like this).
*
* Returns: TRUE on success.
*

View file

@ -119,7 +119,12 @@ sub detach_parasite {
$blurb = 'Removes a global parasite.';
$help = <<'HELP';
This procedure detaches a global parasite from. It has no return values.
This procedure detaches a global parasite.
It will return %FALSE if @name is invalid (%NULL or empty string) and
%TRUE otherwise (even if there was no parasite removed, because no
parasite was named like this).
HELP
&jay_pdb_misc('1998', '2.8');
@ -132,7 +137,10 @@ HELP
%invoke = (
code => <<'CODE'
{
gimp_parasite_detach (gimp, name);
if (name && strlen (name) > 0)
gimp_parasite_detach (gimp, name);
else
success = FALSE;
}
CODE
);

View file

@ -3031,7 +3031,12 @@ sub image_detach_parasite {
$blurb = 'Removes a parasite from an image.';
$help = <<'HELP';
This procedure detaches a parasite from an image. It has no return values.
This procedure detaches a parasite from an image.
It will return %FALSE if @name is invalid (%NULL or empty string) and
%TRUE otherwise (even if there was no parasite removed, because no
parasite was named like this).
HELP
&jay_pdb_misc('1998', '2.8');
@ -3046,7 +3051,10 @@ HELP
%invoke = (
code => <<'CODE'
{
gimp_image_parasite_detach (image, name, TRUE);
if (name && strlen (name) > 0)
gimp_image_parasite_detach (image, name, TRUE);
else
success = FALSE;
}
CODE
);