⬢ DragonFlyBSD Kernel Audit
DF-4470 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/drm/drm_crtc.c
+++ b/sys/dev/drm/drm_crtc.c
@@ -578,7 +578,7 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
 	struct drm_mode_set set;
 	uint32_t __user *set_connectors_ptr;
 	struct drm_modeset_acquire_ctx ctx;
-	int ret;
+	int ret, j;
 	int i;
@@ -729,6 +729,13 @@ int drm_mode_setcrtc(struct drm_device *dev, void *data,
 			ret = -ENOENT;
 			goto out;
 		}
+		for (j = 0; j < i; j++) {
+			if (connector_set[j] == connector) {
+				DRM_DEBUG_KMS("Duplicate connector id %d\n",
+					out_id);
+				ret = -EINVAL;
+				goto out;
+			}
+		}
 		DRM_DEBUG_KMS("[CONNECTOR:%d:%s]\n",
 			connector->base.id,
 			connector->name);