[gobject-introspection] Fix a possible use-after-free.



commit 7fb2307356184580ab70f0821f45759a13a69be2
Author: Elliott Sales de Andrade <quantum analyst gmail com>
Date:   Thu Jan 31 16:46:38 2019 -0500

    Fix a possible use-after-free.
    
    If g_mapped_file_new fails, then `version` will be freed, but it was
    already added to the hash table. This means there could be a
    use-after-free while doing a lookup on the hash table the next time.

 girepository/girepository.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
---
diff --git a/girepository/girepository.c b/girepository/girepository.c
index bc9e4ed5..ca5dc2b9 100644
--- a/girepository/girepository.c
+++ b/girepository/girepository.c
@@ -1405,7 +1405,6 @@ enumerate_namespace_versions (const gchar *namespace,
              g_free (version);
              continue;
            }
-         g_hash_table_insert (found_versions, version, version);
 
          path = g_build_filename (dirname, entry, NULL);
          mfile = g_mapped_file_new (path, FALSE, &error);
@@ -1422,6 +1421,7 @@ enumerate_namespace_versions (const gchar *namespace,
          candidate->path = path;
          candidate->version = version;
          candidates = g_slist_prepend (candidates, candidate);
+         g_hash_table_add (found_versions, version);
        }
       g_dir_close (dir);
       index++;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]