summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmil Velikov <[email protected]>2017-09-18 11:29:21 +0100
committerEmil Velikov <[email protected]>2017-10-02 16:19:13 +0100
commit21e271024d8e050b75361c2da2e5783100f2e87b (patch)
treee008e2c37c0ba9c29dddb6c69b2fdf6777ddef2d
parent16ac70bdcf29d075e11f1ebc54405d0ea19b561c (diff)
swr/rast: do not crash on NULL strings returned by getenv
The current convenience function GetEnv feeds the results of getenv directly into std::string(). That is a bad idea, since the variable may be unset, thus we feed NULL into the C++ construct. The latter of which is not allowed and leads to a crash. v2: Better variable name, implicit char* -> std::string conversion (Eric) Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101832 Fixes: a25093de718 ("swr/rast: Implement JIT shader caching to disk") Cc: Tim Rowley <[email protected]> Cc: Laurent Carlier <[email protected]> Cc: Bernhard Rosenkraenzer <[email protected]> [Emil Velikov: make an actual commit from the misc diff] Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Eric Engestrom <[email protected]> (v1) Reviewed-by: Laurent Carlier <[email protected]> (v1)
-rw-r--r--src/gallium/drivers/swr/rasterizer/core/utils.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/gallium/drivers/swr/rasterizer/core/utils.h b/src/gallium/drivers/swr/rasterizer/core/utils.h
index b096d2120cb..c926f6ad7f2 100644
--- a/src/gallium/drivers/swr/rasterizer/core/utils.h
+++ b/src/gallium/drivers/swr/rasterizer/core/utils.h
@@ -365,7 +365,8 @@ static INLINE std::string GetEnv(const std::string& variableName)
output.resize(valueSize - 1); // valueSize includes null, output.resize() does not
GetEnvironmentVariableA(variableName.c_str(), &output[0], valueSize);
#else
- output = getenv(variableName.c_str());
+ char *env = getenv(variableName.c_str());
+ output = env ? env : "";
#endif
return output;