walter harms wrote:
>> diff --git a/hw/xfree86/common/xf86Option.c b/hw/xfree86/common/xf86Option.c
>> index af39b2b..d49aa31 100644
>> --- a/hw/xfree86/common/xf86Option.c
>> +++ b/hw/xfree86/common/xf86Option.c
>> @@ -638,13 +638,10 @@ ParseOptionValue(int scrnIndex, pointer options, 
>> OptionInfoPtr p,
>>          newn = n + 2;
>>      } else {
>>          free(n);
>> -        n = malloc(strlen(p->name) + 2 + 1);
>> -        if (!n) {
>> +        if (asprintf(&n, "No%s", p->name) == -1) {
>>              p->found = FALSE;
>>              return FALSE;
>>          }
>> -        strcpy(n, "No");
>> -        strcat(n, p->name);
>>          newn = n;
>>      }
> 
> Is n needed here at all ? it seems that asprintf(&newn, "No%s", p->name) 
> would work also.

Further down in that function it cleans up with free(n);
which either clears the previous value if we didn't go
through this else clause or frees the value allocated
here - not using n here means making that cleanup more
complicated.


>> diff --git a/hw/xfree86/common/xf86ShowOpts.c 
>> b/hw/xfree86/common/xf86ShowOpts.c
>> index ce86090..c0fa80a 100644
>> --- a/hw/xfree86/common/xf86ShowOpts.c
>> +++ b/hw/xfree86/common/xf86ShowOpts.c
>> @@ -97,11 +97,8 @@ void DoShowOptions (void) {
>>                              );
>>                              continue;                                       
>>                 
>>                      }
>> -                    pSymbol = malloc(
>> -                            strlen(xf86DriverList[i]->driverName) + 
>> strlen("ModuleData") + 1
>> -                    );
>> -                    strcpy (pSymbol, xf86DriverList[i]->driverName);
>> -                    strcat (pSymbol, "ModuleData");
>> +                    XNFasprintf(&pSymbol, "%sModuleData",
>> +                                xf86DriverList[i]->driverName);
> 
> 
> every code before checks the return value of asprintf but not here ?

We don't need to know the length, and error is not an option from the XNF*
variants - they either succeed or cause the server to abort.   I used the
XNF* here since if the malloc failed, previously the server exited, just
going through the sigsegv handler instead of a cleaner AbortServer().
(NF is "No Fail")

-- 
        -Alan Coopersmith-        alan.coopersm...@oracle.com
         Oracle Solaris Platform Engineering: X Window System

_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to