From: Nicolai Hähnle Date: Thu, 3 Nov 2016 09:23:17 +0000 (+0100) Subject: glsl/cache: correct asprintf error handling X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=aef7eb4cacbb241dc895f3e08dba4c91052a98a8;p=mesa.git glsl/cache: correct asprintf error handling From the manpage of asprintf: "If memory allocation wasn't possible, or some other error occurs, these functions will return -1, and the contents of strp are undefined." Reviewed-by: Iago Toral Quiroga Reviewed-by: Edward O'Callaghan --- diff --git a/src/compiler/glsl/cache.c b/src/compiler/glsl/cache.c index 64a34f06217..e74c27d3000 100644 --- a/src/compiler/glsl/cache.c +++ b/src/compiler/glsl/cache.c @@ -416,7 +416,8 @@ choose_random_file_matching(const char *dir_path, return NULL; } - asprintf(&filename, "%s/%s", dir_path, entry->d_name); + if (asprintf(&filename, "%s/%s", dir_path, entry->d_name) < 0) + filename = NULL; closedir(dir); @@ -497,8 +498,7 @@ evict_random_item(struct program_cache *cache) a = rand() % 16; b = rand() % 16; - asprintf (&dir_path, "%s/%c%c", cache->path, hex[a], hex[b]); - if (dir_path == NULL) + if (asprintf(&dir_path, "%s/%c%c", cache->path, hex[a], hex[b]) < 0) return; size = unlink_random_file_from_directory(dir_path);