gimp r25577 - in trunk: . app/plug-in
- From: mitch svn gnome org
- To: svn-commits-list gnome org
- Subject: gimp r25577 - in trunk: . app/plug-in
- Date: Tue, 6 May 2008 21:15:12 +0100 (BST)
Author: mitch
Date: Tue May 6 20:15:12 2008
New Revision: 25577
URL: http://svn.gnome.org/viewvc/gimp?rev=25577&view=rev
Log:
2008-05-06 Michael Natterer <mitch gimp org>
* app/plug-in/gimpplugin-message.c
(gimp_plug_in_handle_proc_install): show an error message instead
of crashing when a plug-in registers a prodecure with a NULL
argument or return value name. Also introduce two macros which
make the utf-8 validation of all strings much more readable.
Modified:
trunk/ChangeLog
trunk/app/plug-in/gimpplugin-message.c
Modified: trunk/app/plug-in/gimpplugin-message.c
==============================================================================
--- trunk/app/plug-in/gimpplugin-message.c (original)
+++ trunk/app/plug-in/gimpplugin-message.c Tue May 6 20:15:12 2008
@@ -583,10 +583,11 @@
gimp_plug_in_handle_proc_install (GimpPlugIn *plug_in,
GPProcInstall *proc_install)
{
- GimpPlugInProcedure *proc = NULL;
- GimpProcedure *procedure = NULL;
+ GimpPlugInProcedure *proc = NULL;
+ GimpProcedure *procedure = NULL;
gchar *canonical;
- gboolean valid_utf8 = FALSE;
+ gboolean null_name = FALSE;
+ gboolean valid_utf8 = FALSE;
gint i;
g_return_if_fail (proc_install != NULL);
@@ -620,39 +621,61 @@
/* Sanity check strings for UTF-8 validity */
- if ((proc_install->menu_path == NULL ||
- g_utf8_validate (proc_install->menu_path, -1, NULL)) &&
- (g_utf8_validate (canonical, -1, NULL)) &&
- (proc_install->blurb == NULL ||
- g_utf8_validate (proc_install->blurb, -1, NULL)) &&
- (proc_install->help == NULL ||
- g_utf8_validate (proc_install->help, -1, NULL)) &&
- (proc_install->author == NULL ||
- g_utf8_validate (proc_install->author, -1, NULL)) &&
- (proc_install->copyright == NULL ||
- g_utf8_validate (proc_install->copyright, -1, NULL)) &&
- (proc_install->date == NULL ||
- g_utf8_validate (proc_install->date, -1, NULL)))
+#define VALIDATE(str) (g_utf8_validate ((str), -1, NULL))
+#define VALIDATE_OR_NULL(str) ((str) == NULL || g_utf8_validate ((str), -1, NULL))
+
+ if (VALIDATE_OR_NULL (proc_install->menu_path) &&
+ VALIDATE (canonical) &&
+ VALIDATE_OR_NULL (proc_install->blurb) &&
+ VALIDATE_OR_NULL (proc_install->help) &&
+ VALIDATE_OR_NULL (proc_install->author) &&
+ VALIDATE_OR_NULL (proc_install->copyright) &&
+ VALIDATE_OR_NULL (proc_install->date))
{
+ null_name = FALSE;
valid_utf8 = TRUE;
- for (i = 0; i < proc_install->nparams && valid_utf8; i++)
+ for (i = 0; i < proc_install->nparams && valid_utf8 && !null_name; i++)
{
- if (! (g_utf8_validate (proc_install->params[i].name, -1, NULL) &&
- (proc_install->params[i].description == NULL ||
- g_utf8_validate (proc_install->params[i].description, -1, NULL))))
- valid_utf8 = FALSE;
+ if (! proc_install->params[i].name)
+ {
+ null_name = TRUE;
+ }
+ else if (! (VALIDATE (proc_install->params[i].name) &&
+ VALIDATE_OR_NULL (proc_install->params[i].description)))
+ {
+ valid_utf8 = FALSE;
+ }
}
- for (i = 0; i < proc_install->nreturn_vals && valid_utf8; i++)
+ for (i = 0; i < proc_install->nreturn_vals && valid_utf8 && !null_name; i++)
{
- if (! (g_utf8_validate (proc_install->return_vals[i].name, -1, NULL) &&
- (proc_install->return_vals[i].description == NULL ||
- g_utf8_validate (proc_install->return_vals[i].description, -1, NULL))))
- valid_utf8 = FALSE;
+ if (! proc_install->return_vals[i].name)
+ {
+ null_name = TRUE;
+ }
+ else if (! (VALIDATE (proc_install->return_vals[i].name) &&
+ VALIDATE_OR_NULL (proc_install->return_vals[i].description)))
+ {
+ valid_utf8 = FALSE;
+ }
}
}
+#undef VALIDATE
+#undef VALIDATE_OR_NULL
+
+ if (null_name)
+ {
+ gimp_message (plug_in->manager->gimp, NULL, GIMP_MESSAGE_ERROR,
+ "Plug-In \"%s\"\n(%s)\n\n"
+ "attempted to install a procedure NULL parameter name.",
+ gimp_object_get_name (GIMP_OBJECT (plug_in)),
+ gimp_filename_to_utf8 (plug_in->prog));
+ g_free (canonical);
+ return;
+ }
+
if (! valid_utf8)
{
gimp_message (plug_in->manager->gimp, NULL, GIMP_MESSAGE_ERROR,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]