summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Skeggs <bskeggs@redhat.com>2010-02-23 15:08:13 +1000
committerBen Skeggs <bskeggs@redhat.com>2010-02-23 15:09:08 +1000
commit70d0a48b6c3f1a817bf850acd3bae48d063e56b9 (patch)
tree2ef1bf4737602fb8cdddf29cca41980717bd1f30
parent83bbeea0d842094dd647e754608420a404eef6e3 (diff)
Protect against potential crash for unknown connector types
-rw-r--r--src/drmmode_display.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 4f27661..1283bc4 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -922,7 +922,7 @@ const char *output_names[] = { "None",
"TV",
"eDP",
};
-
+#define NUM_OUTPUT_NAMES (sizeof(output_names) / sizeof(output_names[0]))
static void
drmmode_output_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode, int num)
@@ -944,8 +944,13 @@ drmmode_output_init(ScrnInfoPtr pScrn, drmmode_ptr drmmode, int num)
return;
}
- snprintf(name, 32, "%s-%d", output_names[koutput->connector_type],
- koutput->connector_type_id);
+ if (koutput->connector_type > NUM_OUTPUT_NAMES)
+ snprintf(name, 32, "Unknown%d-%d", koutput->connector_type,
+ koutput->connector_type_id);
+ else
+ snprintf(name, 32, "%s-%d",
+ output_names[koutput->connector_type],
+ koutput->connector_type_id);
output = xf86OutputCreate (pScrn, &drmmode_output_funcs, name);
if (!output) {