From 558e2fc35e21a0cfafb1449159ca9bf9956e87ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20S=C3=B6ntgen?= Date: Mon, 18 Jul 2022 14:03:35 +0200 Subject: [PATCH] libdrm/etnaviv: fix DRM version implementation Issue #4559. --- .../libports/src/lib/libdrm/ioctl_etnaviv.cc | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/repos/libports/src/lib/libdrm/ioctl_etnaviv.cc b/repos/libports/src/lib/libdrm/ioctl_etnaviv.cc index f8a0994926..2a1a44d765 100644 --- a/repos/libports/src/lib/libdrm/ioctl_etnaviv.cc +++ b/repos/libports/src/lib/libdrm/ioctl_etnaviv.cc @@ -600,17 +600,24 @@ class Etnaviv::Call int _drm_version(drm_version &version) { - static char buffer[1] = { '\0' }; - version.version_major = 1; version.version_minor = 3; version.version_patchlevel = 0; - version.name_len = 0; - version.name = buffer; - version.date_len = 0; - version.date = buffer; - version.desc_len = 0; - version.desc = buffer; + + /** + * Libdrm probes the length by calling version twice + * and the second time strings are allocated. + */ + + version.name_len = 1; + if (version.name) + version.name[0] = '\0'; + version.date_len = 1; + if (version.date) + version.date[0] = '\0'; + version.desc_len = 1; + if (version.desc) + version.desc[0] = '\0'; return 0; }