From c8eeca9492cfac069c7980e7dccfbf733a03baa5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Tue, 16 Jan 2024 02:22:24 +0100 Subject: [PATCH] girnode: Use size_t to compute gir node size and ensure value is valid --- girepository/girnode.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/girepository/girnode.c b/girepository/girnode.c index c6e8fa4cb..b1f243fbd 100644 --- a/girepository/girnode.c +++ b/girepository/girnode.c @@ -435,7 +435,7 @@ uint32_t gi_ir_node_get_size (GIIrNode *node) { GList *l; - int size, n; + size_t size, n; switch (node->type) { @@ -564,9 +564,11 @@ gi_ir_node_get_size (GIIrNode *node) size = 0; } - g_debug ("node %p type '%s' size %d", node, + g_debug ("node %p type '%s' size %zu", node, gi_ir_node_type_to_string (node->type), size); + g_assert (size <= G_MAXUINT32); + return size; } @@ -575,7 +577,7 @@ add_attribute_size (gpointer key, gpointer value, gpointer data) { const char *key_str = key; const char *value_str = value; - int *size_p = data; + size_t *size_p = data; *size_p += sizeof (AttributeBlob); *size_p += ALIGN_VALUE (strlen (key_str) + 1, 4); @@ -588,7 +590,7 @@ gi_ir_node_get_full_size_internal (GIIrNode *parent, GIIrNode *node) { GList *l; - int size, n; + size_t size, n; if (node == NULL && parent != NULL) g_error ("Caught NULL node, parent=%s", parent->name); @@ -882,7 +884,7 @@ gi_ir_node_get_full_size_internal (GIIrNode *parent, size = 0; } - g_debug ("node %s%s%s%p type '%s' full size %d", + g_debug ("node %s%s%s%p type '%s' full size %zu", node->name ? "'" : "", node->name ? node->name : "", node->name ? "' " : "", @@ -890,6 +892,8 @@ gi_ir_node_get_full_size_internal (GIIrNode *parent, g_hash_table_foreach (node->attributes, add_attribute_size, &size); + g_assert (size <= G_MAXUINT32); + return size; }