Handle invalid files & symlinks properly
authorCharles Giessen <charles@lunarg.com>
Thu, 10 Nov 2022 22:00:04 +0000 (15:00 -0700)
committerCharles Giessen <46324611+charles-lunarg@users.noreply.github.com>
Fri, 11 Nov 2022 23:15:42 +0000 (16:15 -0700)
commitb7d671c2ba6bd58507a786609a004ed11821067c
tree3ec2e87e66833b9e784abba5ec8f85dfc639e5b7
parenta2242f4a4b6284261ad6224665e190a6355b5c4e
Handle invalid files & symlinks properly

If loader_get_json fails due to the file missing or the file being a
stale symlink, it returns VK_ERROR_INITIALIZATION_FAILED
which loader_parse_icd_manifest passed upwards. Since the caller of
loader_parse_icd_manifest wasn't expecting that error code, it didn't
skip the ICD, causing an infinite recusion in EnumInstExtProps due
to the call to dlsym("vkEnumerateInstanceExtensionProperties");

This also required changes to callers of loader_get_json which would
propagate VK_ERROR_INITIALIZATION failed during layer searching to
no longer cause vkCreateInstance to abort if any invalid files were
found.

Added tests for symlinks as the origin of this bug is due to 'stale'
symlinks after driver installers
loader/loader.c
tests/framework/test_environment.cpp
tests/framework/test_environment.h
tests/framework/test_util.cpp
tests/framework/test_util.h
tests/loader_envvar_tests.cpp
tests/loader_regression_tests.cpp