Stefan Richter wrote:
> Mauro Carvalho Chehab wrote:
>> Stefan Richter wrote:
>>
>>> The Digital Everywhere firmware have the shortcoming that ca_info_enq and
>>> ca_info are not supported. This means that we can never retrieve the correct
>>> ca_system_id to present in the CI message CA_INFO. Currently the driver uses
>>> the application id retrieved using app_info_req and app_info, but this id
>>> only match the correct ca_system_id as given in ca_info in some cases.
>>> This patch adds a parameter to the driver in order for the user to override
>>> what will be returned in the CA_INFO CI message. Up to four ca_system_ids 
>>> can
>>> be specified.
>>> This is needed for users with CAMs that have different manufacturer id and
>>> ca_system_id and that uses applications that take this into account, like
>>> MythTV.
>> This seems an ugly workaround. The better seems to patch MythTV to accept a 
>> different
>> CAM.
> 
> Ugly it is, for sure.  Can't comment on application-level solutions; if
> thats the proper layer at which to address this, then that would be
> preferable of course.

>From the report, this seems to be a requirement at application level. So, the 
>fix should
be there.

Henrik, is there any reason why not patching MythTV?

> 
>>> +static int num_fake_ca_system_ids;
>> ...
>>> +           for (i = 0; i < num_fake_ca_system_ids; i++) {
>>> +                   app_info[4 + i * 2] =
>>> +                           (fake_ca_system_ids[i] >> 8) & 0xff;
>> ...
>>
>> NAK. If someone put an arbitrary high value for num_fake_ca_system_id's, it 
>> will write outside
>> the app_info array space, as the num_fake_ca_system_ids is not validated 
>> against the size
>> of app_info.
> 
> That's what I thought at first look at the patch too, but then I noticed
> that inlcude/linux/moduleparam.h and kernel/params.c properly track
> kparam_arry.max = ARRAY_SIZE(array).
> http://lxr.linux.no/#linux+v2.6.33/include/linux/moduleparam.h#L62
> http://lxr.linux.no/#linux+v2.6.33/include/linux/moduleparam.h#L213
> http://lxr.linux.no/#linux+v2.6.33/kernel/params.c#L351
> http://lxr.linux.no/#linux+v2.6.33/kernel/params.c#L296
> 
> So no danger here.
> 
>> Also, it makes no sense a negative value for this parameter.
> 
> I already posted an updated version of the patch which correctly defines
> num_fake_ca_system_ids as an unsigned long.

Ok. As app_info is char [256] (from ca_info::msg field), and kernel module 
avoids
the size of the array to be bigger than 4 (the sizeof the array), that's should 
be ok.

-- 

Cheers,
Mauro
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to