armbian-build/packages/extras-buildpkgs/libvdpau/debian/patches/simplify-dlopen-path-length-error-handling.patch
2017-07-17 17:37:58 +03:00

48 lines
1.9 KiB
Diff

From: Andreas Beckmann <debian@abeckmann.de>
Subject: simplify path overflow error handling
"path too long" is not a fatal error, there may be other search paths
that don't overflow, so try them as well
--- a/src/vdpau_wrapper.c
+++ b/src/vdpau_wrapper.c
@@ -132,6 +132,8 @@ static VdpStatus _vdp_open_driver(
vdpau_driver = "nvidia";
}
+ _vdp_driver_dll = NULL;
+
/* Don't allow setuid apps to use VDPAU_DRIVER_PATH */
vdpau_driver_path = secure_getenv("VDPAU_DRIVER_PATH");
if (vdpau_driver_path &&
@@ -141,12 +143,6 @@ static VdpStatus _vdp_open_driver(
DRIVER_LIB_FORMAT, VDPAU_MODULEDIR, vdpau_driver) >=
sizeof(vdpau_driver_lib)) {
fprintf(stderr, "Failed to construct driver path: path too long\n");
- if (vdpau_driver_dri2) {
- XFree(vdpau_driver_dri2);
- vdpau_driver_dri2 = NULL;
- }
- _VDP_ERROR_BREAKPOINT();
- return VDP_STATUS_NO_IMPLEMENTATION;
}
else {
_vdp_driver_dll = dlopen(vdpau_driver_lib, RTLD_NOW | RTLD_GLOBAL);
@@ -154,11 +150,12 @@ static VdpStatus _vdp_open_driver(
}
if (!_vdp_driver_dll) {
- /* Try again using the old path, which is guaranteed to fit in PATH_MAX
- * if the complete path fit above. */
- snprintf(vdpau_driver_lib, sizeof(vdpau_driver_lib),
- DRIVER_FALLBACK_LIB_FORMAT, vdpau_driver);
- _vdp_driver_dll = dlopen(vdpau_driver_lib, RTLD_NOW | RTLD_GLOBAL);
+ /* Try again using the old path. */
+ if (snprintf(vdpau_driver_lib, sizeof(vdpau_driver_lib),
+ DRIVER_FALLBACK_LIB_FORMAT, vdpau_driver) <
+ sizeof(vdpau_driver_lib)) {
+ _vdp_driver_dll = dlopen(vdpau_driver_lib, RTLD_NOW | RTLD_GLOBAL);
+ }
}
if (vdpau_driver_dri2) {