Don't pass a negative value as string length to get_child_node().

2006-04-12  Matthias Clasen  <mclasen@redhat.com>

        * gtk/gtkuimanager.c (start_element_handler): Don't pass
        a negative value as string length to get_child_node().  (Coverity)
This commit is contained in:
Matthias Clasen
2006-04-12 04:49:18 +00:00
committed by Matthias Clasen
parent d13554a35c
commit e0e24d0313
3 changed files with 30 additions and 29 deletions

View File

@ -1,5 +1,8 @@
2006-04-12 Matthias Clasen <mclasen@redhat.com> 2006-04-12 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkuimanager.c (start_element_handler): Don't pass
a negative value as string length to get_child_node(). (Coverity)
* gtk/gtkicontheme.c (insert_theme): Handle dirs == NULL * gtk/gtkicontheme.c (insert_theme): Handle dirs == NULL
gracefully. (Coverity) gracefully. (Coverity)

View File

@ -1,5 +1,8 @@
2006-04-12 Matthias Clasen <mclasen@redhat.com> 2006-04-12 Matthias Clasen <mclasen@redhat.com>
* gtk/gtkuimanager.c (start_element_handler): Don't pass
a negative value as string length to get_child_node(). (Coverity)
* gtk/gtkicontheme.c (insert_theme): Handle dirs == NULL * gtk/gtkicontheme.c (insert_theme): Handle dirs == NULL
gracefully. (Coverity) gracefully. (Coverity)

View File

@ -1308,7 +1308,7 @@ start_element_handler (GMarkupParseContext *context,
if (!strcmp (node_name, "separator")) if (!strcmp (node_name, "separator"))
{ {
node_name = NULL; node_name = NULL;
length = -1; length = 0;
} }
else else
length = strlen (node_name); length = strlen (node_name);
@ -1817,7 +1817,7 @@ get_action_by_name (GtkUIManager *merge,
return NULL; return NULL;
} }
static gboolean static void
find_menu_position (GNode *node, find_menu_position (GNode *node,
GtkWidget **menushell_p, GtkWidget **menushell_p,
gint *pos_p) gint *pos_p)
@ -1825,13 +1825,12 @@ find_menu_position (GNode *node,
GtkWidget *menushell; GtkWidget *menushell;
gint pos; gint pos;
g_return_val_if_fail (node != NULL, FALSE); g_return_if_fail (node != NULL);
g_return_val_if_fail (NODE_INFO (node)->type == NODE_TYPE_MENU || g_return_if_fail (NODE_INFO (node)->type == NODE_TYPE_MENU ||
NODE_INFO (node)->type == NODE_TYPE_POPUP || NODE_INFO (node)->type == NODE_TYPE_POPUP ||
NODE_INFO (node)->type == NODE_TYPE_MENU_PLACEHOLDER || NODE_INFO (node)->type == NODE_TYPE_MENU_PLACEHOLDER ||
NODE_INFO (node)->type == NODE_TYPE_MENUITEM || NODE_INFO (node)->type == NODE_TYPE_MENUITEM ||
NODE_INFO (node)->type == NODE_TYPE_SEPARATOR, NODE_INFO (node)->type == NODE_TYPE_SEPARATOR);
FALSE);
/* first sibling -- look at parent */ /* first sibling -- look at parent */
if (node->prev == NULL) if (node->prev == NULL)
@ -1867,7 +1866,7 @@ find_menu_position (GNode *node,
default: default:
g_warning("%s: bad parent node type %d", G_STRLOC, g_warning("%s: bad parent node type %d", G_STRLOC,
NODE_INFO (parent)->type); NODE_INFO (parent)->type);
return FALSE; return;
} }
} }
else else
@ -1881,9 +1880,9 @@ find_menu_position (GNode *node,
else else
prev_child = NODE_INFO (sibling)->proxy; prev_child = NODE_INFO (sibling)->proxy;
g_return_val_if_fail (GTK_IS_WIDGET (prev_child), FALSE); g_return_if_fail (GTK_IS_WIDGET (prev_child));
menushell = gtk_widget_get_parent (prev_child); menushell = gtk_widget_get_parent (prev_child);
g_return_val_if_fail (GTK_IS_MENU_SHELL (menushell), FALSE); g_return_if_fail (GTK_IS_MENU_SHELL (menushell));
pos = g_list_index (GTK_MENU_SHELL (menushell)->children, prev_child) + 1; pos = g_list_index (GTK_MENU_SHELL (menushell)->children, prev_child) + 1;
} }
@ -1892,11 +1891,9 @@ find_menu_position (GNode *node,
*menushell_p = menushell; *menushell_p = menushell;
if (pos_p) if (pos_p)
*pos_p = pos; *pos_p = pos;
return TRUE;
} }
static gboolean static void
find_toolbar_position (GNode *node, find_toolbar_position (GNode *node,
GtkWidget **toolbar_p, GtkWidget **toolbar_p,
gint *pos_p) gint *pos_p)
@ -1904,12 +1901,11 @@ find_toolbar_position (GNode *node,
GtkWidget *toolbar; GtkWidget *toolbar;
gint pos; gint pos;
g_return_val_if_fail (node != NULL, FALSE); g_return_if_fail (node != NULL);
g_return_val_if_fail (NODE_INFO (node)->type == NODE_TYPE_TOOLBAR || g_return_if_fail (NODE_INFO (node)->type == NODE_TYPE_TOOLBAR ||
NODE_INFO (node)->type == NODE_TYPE_TOOLBAR_PLACEHOLDER || NODE_INFO (node)->type == NODE_TYPE_TOOLBAR_PLACEHOLDER ||
NODE_INFO (node)->type == NODE_TYPE_TOOLITEM || NODE_INFO (node)->type == NODE_TYPE_TOOLITEM ||
NODE_INFO (node)->type == NODE_TYPE_SEPARATOR, NODE_INFO (node)->type == NODE_TYPE_SEPARATOR);
FALSE);
/* first sibling -- look at parent */ /* first sibling -- look at parent */
if (node->prev == NULL) if (node->prev == NULL)
@ -1925,14 +1921,14 @@ find_toolbar_position (GNode *node,
break; break;
case NODE_TYPE_TOOLBAR_PLACEHOLDER: case NODE_TYPE_TOOLBAR_PLACEHOLDER:
toolbar = gtk_widget_get_parent (NODE_INFO (parent)->proxy); toolbar = gtk_widget_get_parent (NODE_INFO (parent)->proxy);
g_return_val_if_fail (GTK_IS_TOOLBAR (toolbar), FALSE); g_return_if_fail (GTK_IS_TOOLBAR (toolbar));
pos = gtk_toolbar_get_item_index (GTK_TOOLBAR (toolbar), pos = gtk_toolbar_get_item_index (GTK_TOOLBAR (toolbar),
GTK_TOOL_ITEM (NODE_INFO (parent)->proxy)) + 1; GTK_TOOL_ITEM (NODE_INFO (parent)->proxy)) + 1;
break; break;
default: default:
g_warning ("%s: bad parent node type %d", G_STRLOC, g_warning ("%s: bad parent node type %d", G_STRLOC,
NODE_INFO (parent)->type); NODE_INFO (parent)->type);
return FALSE; return;
} }
} }
else else
@ -1946,9 +1942,9 @@ find_toolbar_position (GNode *node,
else else
prev_child = NODE_INFO (sibling)->proxy; prev_child = NODE_INFO (sibling)->proxy;
g_return_val_if_fail (GTK_IS_WIDGET (prev_child), FALSE); g_return_if_fail (GTK_IS_WIDGET (prev_child));
toolbar = gtk_widget_get_parent (prev_child); toolbar = gtk_widget_get_parent (prev_child);
g_return_val_if_fail (GTK_IS_TOOLBAR (toolbar), FALSE); g_return_if_fail (GTK_IS_TOOLBAR (toolbar));
pos = gtk_toolbar_get_item_index (GTK_TOOLBAR (toolbar), pos = gtk_toolbar_get_item_index (GTK_TOOLBAR (toolbar),
GTK_TOOL_ITEM (prev_child)) + 1; GTK_TOOL_ITEM (prev_child)) + 1;
@ -1958,8 +1954,6 @@ find_toolbar_position (GNode *node,
*toolbar_p = toolbar; *toolbar_p = toolbar;
if (pos_p) if (pos_p)
*pos_p = pos; *pos_p = pos;
return TRUE;
} }
/** /**
@ -2253,6 +2247,7 @@ update_node (GtkUIManager *self,
GtkWidget *menushell; GtkWidget *menushell;
gint pos; gint pos;
if (!
if (NODE_INFO (node->parent)->type == NODE_TYPE_TOOLITEM || if (NODE_INFO (node->parent)->type == NODE_TYPE_TOOLITEM ||
find_menu_position (node, &menushell, &pos)) find_menu_position (node, &menushell, &pos))
{ {