Mesa (master): mesa/main: avoid null access in format_array_table_init()

Juha Pekka Heikkilä jheikkil at kemper.freedesktop.org
Thu Jun 11 10:24:23 UTC 2015


Module: Mesa
Branch: master
Commit: 56e9f3b493a8677e60e4473ca0faf0e3d1a79888
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=56e9f3b493a8677e60e4473ca0faf0e3d1a79888

Author: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
Date:   Fri Mar 20 15:40:26 2015 +0200

mesa/main: avoid null access in format_array_table_init()

If _mesa_hash_table_create failed we'd get null pointer. Report
error and go away.

Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila at gmail.com>
Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>

---

 src/mesa/main/formats.c |   10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c
index 8af44e9..f7c9402 100644
--- a/src/mesa/main/formats.c
+++ b/src/mesa/main/formats.c
@@ -397,6 +397,11 @@ format_array_format_table_init(void)
    format_array_format_table = _mesa_hash_table_create(NULL, NULL,
                                                        array_formats_equal);
 
+   if (!format_array_format_table) {
+      _mesa_error_no_memory(__func__);
+      return;
+   }
+
    for (f = 1; f < MESA_FORMAT_COUNT; ++f) {
       info = _mesa_get_format_info(f);
       if (!info->ArrayFormat)
@@ -432,6 +437,11 @@ _mesa_format_from_array_format(uint32_t array_format)
 
    call_once(&format_array_format_table_exists, format_array_format_table_init);
 
+   if (!format_array_format_table) {
+      format_array_format_table_exists = ONCE_FLAG_INIT;
+      return MESA_FORMAT_NONE;
+   }
+
    entry = _mesa_hash_table_search_pre_hashed(format_array_format_table,
                                               array_format,
                                               (void *)(intptr_t)array_format);




More information about the mesa-commit mailing list