Path: blob/next/external/packages/extras-buildpkgs/libvdpau/debian/patches/simplify-dlopen-path-length-error-handling.patch
13915 views
From: Andreas Beckmann <[email protected]>1Subject: simplify path overflow error handling2"path too long" is not a fatal error, there may be other search paths3that don't overflow, so try them as well45--- a/src/vdpau_wrapper.c6+++ b/src/vdpau_wrapper.c7@@ -132,6 +132,8 @@ static VdpStatus _vdp_open_driver(8vdpau_driver = "nvidia";9}1011+ _vdp_driver_dll = NULL;12+13/* Don't allow setuid apps to use VDPAU_DRIVER_PATH */14vdpau_driver_path = secure_getenv("VDPAU_DRIVER_PATH");15if (vdpau_driver_path &&16@@ -141,12 +143,6 @@ static VdpStatus _vdp_open_driver(17DRIVER_LIB_FORMAT, VDPAU_MODULEDIR, vdpau_driver) >=18sizeof(vdpau_driver_lib)) {19fprintf(stderr, "Failed to construct driver path: path too long\n");20- if (vdpau_driver_dri2) {21- XFree(vdpau_driver_dri2);22- vdpau_driver_dri2 = NULL;23- }24- _VDP_ERROR_BREAKPOINT();25- return VDP_STATUS_NO_IMPLEMENTATION;26}27else {28_vdp_driver_dll = dlopen(vdpau_driver_lib, RTLD_NOW | RTLD_GLOBAL);29@@ -154,11 +150,12 @@ static VdpStatus _vdp_open_driver(30}3132if (!_vdp_driver_dll) {33- /* Try again using the old path, which is guaranteed to fit in PATH_MAX34- * if the complete path fit above. */35- snprintf(vdpau_driver_lib, sizeof(vdpau_driver_lib),36- DRIVER_FALLBACK_LIB_FORMAT, vdpau_driver);37- _vdp_driver_dll = dlopen(vdpau_driver_lib, RTLD_NOW | RTLD_GLOBAL);38+ /* Try again using the old path. */39+ if (snprintf(vdpau_driver_lib, sizeof(vdpau_driver_lib),40+ DRIVER_FALLBACK_LIB_FORMAT, vdpau_driver) <41+ sizeof(vdpau_driver_lib)) {42+ _vdp_driver_dll = dlopen(vdpau_driver_lib, RTLD_NOW | RTLD_GLOBAL);43+ }44}4546if (vdpau_driver_dri2) {474849