aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Engestrom <eric.engestrom@intel.com>2018-12-19 13:42:08 +0000
committerEric Engestrom <eric.engestrom@intel.com>2019-07-03 13:06:21 +0100
commit6869e4cea77ba1dce709a6359941ab73fe0adcc1 (patch)
treec16f113f78b6a3c94aef4877e1f98c5ac9faf115
parent0d5ea0773652e5d5fcd4a578f8b3d3303a40b6a1 (diff)
downloadexternal_libdrm-6869e4cea77ba1dce709a6359941ab73fe0adcc1.tar.gz
external_libdrm-6869e4cea77ba1dce709a6359941ab73fe0adcc1.tar.bz2
external_libdrm-6869e4cea77ba1dce709a6359941ab73fe0adcc1.zip
xf86drm: use max size of drm node name instead of arbitrary size
Signed-off-by: Eric Engestrom <eric.engestrom@intel.com>
-rw-r--r--xf86drm.c4
-rw-r--r--xf86drm.h8
2 files changed, 10 insertions, 2 deletions
diff --git a/xf86drm.c b/xf86drm.c
index 427f2c41..3f4dfadd 100644
--- a/xf86drm.c
+++ b/xf86drm.c
@@ -317,7 +317,7 @@ static int drmOpenDevice(dev_t dev, int minor, int type)
{
stat_t st;
const char *dev_name;
- char buf[64];
+ char buf[DRM_NODE_NAME_MAX];
int fd;
mode_t devmode = DRM_DEV_MODE, serv_mode;
gid_t serv_group;
@@ -445,7 +445,7 @@ wait_for_udev:
static int drmOpenMinor(int minor, int create, int type)
{
int fd;
- char buf[64];
+ char buf[DRM_NODE_NAME_MAX];
const char *dev_name;
if (create)
diff --git a/xf86drm.h b/xf86drm.h
index 08b99f15..3f52cd8c 100644
--- a/xf86drm.h
+++ b/xf86drm.h
@@ -93,6 +93,14 @@ extern "C" {
#define DRM_CONTROL_DEV_NAME "%s/" DRM_CONTROL_MINOR_NAME "%d"
#define DRM_RENDER_DEV_NAME "%s/" DRM_RENDER_MINOR_NAME "%d"
+#define DRM_NODE_NAME_MAX \
+ (sizeof(DRM_DIR_NAME) + 1 /* slash */ \
+ + MAX3(sizeof(DRM_PRIMARY_MINOR_NAME), \
+ sizeof(DRM_CONTROL_MINOR_NAME), \
+ sizeof(DRM_RENDER_MINOR_NAME)) \
+ + sizeof("144") /* highest possible node number */ \
+ + 1) /* NULL-terminator */
+
#define DRM_ERR_NO_DEVICE (-1001)
#define DRM_ERR_NO_ACCESS (-1002)
#define DRM_ERR_NOT_ROOT (-1003)