diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2010-02-23 15:08:13 +1000 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2010-02-23 15:09:08 +1000 |
commit | 70d0a48b6c3f1a817bf850acd3bae48d063e56b9 (patch) | |
tree | 2ef1bf4737602fb8cdddf29cca41980717bd1f30 | |
parent | 83bbeea0d842094dd647e754608420a404eef6e3 (diff) |
Protect against potential crash for unknown connector types
-rw-r--r-- | src/drmmode_display.c | 11 |
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) { |