On 16/04/10 18:17, Alan Coopersmith wrote:
> Tiago Vignatti wrote:
>> Seems to be harmless. Meh.
>>
>> Signed-off-by: Tiago Vignatti <[email protected]>
>> ---
>> hw/xfree86/parser/scan.c | 9 +++++++--
>> 1 files changed, 7 insertions(+), 2 deletions(-)
>>
>> diff --git a/hw/xfree86/parser/scan.c b/hw/xfree86/parser/scan.c
>> index 8aab0cf..0b9461b 100644
>> --- a/hw/xfree86/parser/scan.c
>> +++ b/hw/xfree86/parser/scan.c
>> @@ -844,11 +844,16 @@ OpenConfigFile(const char *path, const char *cmdline,
>> const char *projroot,
>> static int
>> ConfigFilter(const struct dirent *de)
>> {
>> - const char *name = de->d_name;
>> + const char *name;
>> size_t len = strlen(name);
>> size_t suflen = strlen(XCONFIGSUFFIX);
>>
>> - if (!name || name[0] == '.' || len <= suflen)
>> + if (!name)
>> + return 0;
>> +
>> + name = de->d_name;
>
> NACK. You are now checking if the uninitialized variable is not-NULL and
> never checking the actual value, as well as calling strlen on the
> uninitialized
> value. The problem is that strlen(name) is being called before if (!name), so
> the correct fix would be:
... and you probably want to check de is not NULL as well :-)
Eric
>
> @@ -845,10 +845,13 @@ static int
> ConfigFilter(const struct dirent *de)
> {
> const char *name = de->d_name;
> - size_t len = strlen(name);
> + size_t len;
> size_t suflen = strlen(XCONFIGSUFFIX);
>
> - if (!name || name[0] == '.' || len <= suflen)
> + if (!name || name[0] == '.')
> + return 0;
> + len = strlen(name);
> + if (len <= suflen)
> return 0;
> if (strcmp(&name[len-suflen], XCONFIGSUFFIX) != 0)
> return 0;
>
>
>
_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel