2013-03-25 04:30:57

by Chen Gang

[permalink] [raw]
Subject: Re: [PATCH] arch/powerpc/kernel: using %12.12s instead of %12s for avoiding memory overflow.

Hello Maintainers:

could you help check this patch whether is ok ?

thanks.


On 2013??02??17?? 12:00, Chen Gang wrote:
> Hello relative members:
>
> please give a glance to this patch, when you have time.
>
> thanks.
>
> :-)
>
> gchen.
>
>
> ?? 2013??01??24?? 12:14, Chen Gang д??:
>>
>> for tmp_part->header.name:
>> it is "Terminating null required only for names < 12 chars".
>> so need to limit the %.12s for it in printk
>>
>> additional info:
>>
>> %12s limit the width, not for the original string output length
>> if name length is more than 12, it still can be fully displayed.
>> if name length is less than 12, the ' ' will be filled before name.
>>
>> %.12s truly limit the original string output length (precision)
>>
>>
>> Signed-off-by: Chen Gang <[email protected]>
>> ---
>> arch/powerpc/kernel/nvram_64.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/arch/powerpc/kernel/nvram_64.c b/arch/powerpc/kernel/nvram_64.c
>> index bec1e93..57bf6d2 100644
>> --- a/arch/powerpc/kernel/nvram_64.c
>> +++ b/arch/powerpc/kernel/nvram_64.c
>> @@ -202,7 +202,7 @@ static void __init nvram_print_partitions(char * label)
>> printk(KERN_WARNING "--------%s---------\n", label);
>> printk(KERN_WARNING "indx\t\tsig\tchks\tlen\tname\n");
>> list_for_each_entry(tmp_part, &nvram_partitions, partition) {
>> - printk(KERN_WARNING "%4d \t%02x\t%02x\t%d\t%12s\n",
>> + printk(KERN_WARNING "%4d \t%02x\t%02x\t%d\t%12.12s\n",
>> tmp_part->index, tmp_part->header.signature,
>> tmp_part->header.checksum, tmp_part->header.length,
>> tmp_part->header.name);
>>
>
>


--
Chen Gang

Asianux Corporation


2013-04-24 07:46:14

by Chen Gang

[permalink] [raw]
Subject: Re: [PATCH] arch/powerpc/kernel: using %12.12s instead of %12s for avoiding memory overflow.

Hello Vasant Hegde:

How about this patch, is it OK ?

Thanks.


On 2013??03??25?? 12:30, Chen Gang wrote:
> Hello Maintainers:
>
> could you help check this patch whether is ok ?
>
> thanks.
>
>
> On 2013??02??17?? 12:00, Chen Gang wrote:
>> Hello relative members:
>>
>> please give a glance to this patch, when you have time.
>>
>> thanks.
>>
>> :-)
>>
>> gchen.
>>
>>
>> ?? 2013??01??24?? 12:14, Chen Gang д??:
>>>
>>> for tmp_part->header.name:
>>> it is "Terminating null required only for names < 12 chars".
>>> so need to limit the %.12s for it in printk
>>>
>>> additional info:
>>>
>>> %12s limit the width, not for the original string output length
>>> if name length is more than 12, it still can be fully displayed.
>>> if name length is less than 12, the ' ' will be filled before name.
>>>
>>> %.12s truly limit the original string output length (precision)
>>>
>>>
>>> Signed-off-by: Chen Gang <[email protected]>
>>> ---
>>> arch/powerpc/kernel/nvram_64.c | 2 +-
>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/arch/powerpc/kernel/nvram_64.c b/arch/powerpc/kernel/nvram_64.c
>>> index bec1e93..57bf6d2 100644
>>> --- a/arch/powerpc/kernel/nvram_64.c
>>> +++ b/arch/powerpc/kernel/nvram_64.c
>>> @@ -202,7 +202,7 @@ static void __init nvram_print_partitions(char * label)
>>> printk(KERN_WARNING "--------%s---------\n", label);
>>> printk(KERN_WARNING "indx\t\tsig\tchks\tlen\tname\n");
>>> list_for_each_entry(tmp_part, &nvram_partitions, partition) {
>>> - printk(KERN_WARNING "%4d \t%02x\t%02x\t%d\t%12s\n",
>>> + printk(KERN_WARNING "%4d \t%02x\t%02x\t%d\t%12.12s\n",
>>> tmp_part->index, tmp_part->header.signature,
>>> tmp_part->header.checksum, tmp_part->header.length,
>>> tmp_part->header.name);
>>>
>>
>>
>
>


--
Chen Gang

Asianux Corporation

2013-04-24 08:15:39

by Vasant Hegde

[permalink] [raw]
Subject: Re: [PATCH] arch/powerpc/kernel: using %12.12s instead of %12s for avoiding memory overflow.

On 04/24/2013 01:15 PM, Chen Gang wrote:
> Hello Vasant Hegde:
>
> How about this patch, is it OK ?
>
> Thanks.
>
>
> On 2013??03??25?? 12:30, Chen Gang wrote:
>> Hello Maintainers:
>>
>> could you help check this patch whether is ok ?
>>
>> thanks.
>>
>>
>> On 2013??02??17?? 12:00, Chen Gang wrote:
>>> Hello relative members:
>>>
>>> please give a glance to this patch, when you have time.
>>>
>>> thanks.
>>>
>>> :-)
>>>
>>> gchen.
>>>
>>>
>>> ?? 2013??01??24?? 12:14, Chen Gang д??:
>>>>
>>>> for tmp_part->header.name:
>>>> it is "Terminating null required only for names< 12 chars".
>>>> so need to limit the %.12s for it in printk
>>>>
>>>> additional info:
>>>>
>>>> %12s limit the width, not for the original string output length
>>>> if name length is more than 12, it still can be fully displayed.
>>>> if name length is less than 12, the ' ' will be filled before name.
>>>>
>>>> %.12s truly limit the original string output length (precision)
>>>>
>>>>
>>>> Signed-off-by: Chen Gang<[email protected]>
>>>> ---
>>>> arch/powerpc/kernel/nvram_64.c | 2 +-
>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/arch/powerpc/kernel/nvram_64.c b/arch/powerpc/kernel/nvram_64.c
>>>> index bec1e93..57bf6d2 100644
>>>> --- a/arch/powerpc/kernel/nvram_64.c
>>>> +++ b/arch/powerpc/kernel/nvram_64.c
>>>> @@ -202,7 +202,7 @@ static void __init nvram_print_partitions(char * label)
>>>> printk(KERN_WARNING "--------%s---------\n", label);
>>>> printk(KERN_WARNING "indx\t\tsig\tchks\tlen\tname\n");
>>>> list_for_each_entry(tmp_part,&nvram_partitions, partition) {
>>>> - printk(KERN_WARNING "%4d \t%02x\t%02x\t%d\t%12s\n",
>>>> + printk(KERN_WARNING "%4d \t%02x\t%02x\t%d\t%12.12s\n",

First, this code in inside NVRAM_DEBUG which is used only for debug purpose and
AFAIK, all partition names are less than 20 character. So I don't think we need
this patch.

-Vasant

>>>> tmp_part->index, tmp_part->header.signature,
>>>> tmp_part->header.checksum, tmp_part->header.length,
>>>> tmp_part->header.name);
>>>>
>>>
>>>
>>
>>
>
>

2013-04-24 08:19:53

by Vasant Hegde

[permalink] [raw]
Subject: Re: [PATCH] arch/powerpc/kernel: using %12.12s instead of %12s for avoiding memory overflow.

On 04/24/2013 01:45 PM, Vasant Hegde wrote:
> On 04/24/2013 01:15 PM, Chen Gang wrote:
>> Hello Vasant Hegde:
>>
>> How about this patch, is it OK ?
>>
>> Thanks.
>>
>>
>> On 2013??03??25?? 12:30, Chen Gang wrote:
>>> Hello Maintainers:
>>>
>>> could you help check this patch whether is ok ?
>>>
>>> thanks.
>>>
>>>
>>> On 2013??02??17?? 12:00, Chen Gang wrote:
>>>> Hello relative members:
>>>>
>>>> please give a glance to this patch, when you have time.
>>>>
>>>> thanks.
>>>>
>>>> :-)
>>>>
>>>> gchen.
>>>>
>>>>
>>>> ?? 2013??01??24?? 12:14, Chen Gang д??:
>>>>>
>>>>> for tmp_part->header.name:
>>>>> it is "Terminating null required only for names< 12 chars".
>>>>> so need to limit the %.12s for it in printk
>>>>>
>>>>> additional info:
>>>>>
>>>>> %12s limit the width, not for the original string output length
>>>>> if name length is more than 12, it still can be fully displayed.
>>>>> if name length is less than 12, the ' ' will be filled before name.
>>>>>
>>>>> %.12s truly limit the original string output length (precision)
>>>>>
>>>>>
>>>>> Signed-off-by: Chen Gang<[email protected]>
>>>>> ---
>>>>> arch/powerpc/kernel/nvram_64.c | 2 +-
>>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>
>>>>> diff --git a/arch/powerpc/kernel/nvram_64.c b/arch/powerpc/kernel/nvram_64.c
>>>>> index bec1e93..57bf6d2 100644
>>>>> --- a/arch/powerpc/kernel/nvram_64.c
>>>>> +++ b/arch/powerpc/kernel/nvram_64.c
>>>>> @@ -202,7 +202,7 @@ static void __init nvram_print_partitions(char * label)
>>>>> printk(KERN_WARNING "--------%s---------\n", label);
>>>>> printk(KERN_WARNING "indx\t\tsig\tchks\tlen\tname\n");
>>>>> list_for_each_entry(tmp_part,&nvram_partitions, partition) {
>>>>> - printk(KERN_WARNING "%4d \t%02x\t%02x\t%d\t%12s\n",
>>>>> + printk(KERN_WARNING "%4d \t%02x\t%02x\t%d\t%12.12s\n",
>
> First, this code in inside NVRAM_DEBUG which is used only for debug purpose and
> AFAIK, all partition names are less than 20 character. So I don't think we need

Sorry.. I meant 12 character.

-Vasant


> this patch.
>
> -Vasant
>
>>>>> tmp_part->index, tmp_part->header.signature,
>>>>> tmp_part->header.checksum, tmp_part->header.length,
>>>>> tmp_part->header.name);
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
> _______________________________________________
> Linuxppc-dev mailing list
> [email protected]
> https://lists.ozlabs.org/listinfo/linuxppc-dev

2013-04-24 08:32:31

by Chen Gang

[permalink] [raw]
Subject: Re: [PATCH] arch/powerpc/kernel: using %12.12s instead of %12s for avoiding memory overflow.

On 2013年04月24日 16:19, Vasant Hegde wrote:
>>>>>> for tmp_part->header.name:
>>>>>> >>>>> it is "Terminating null required only for names< 12 chars".
>>>>>> >>>>> so need to limit the %.12s for it in printk
>>>>>> >>>>>
>>>>>> >>>>> additional info:
>>>>>> >>>>>
>>>>>> >>>>> %12s limit the width, not for the original string output length
>>>>>> >>>>> if name length is more than 12, it still can be fully displayed.
>>>>>> >>>>> if name length is less than 12, the ' ' will be filled before name.
>>>>>> >>>>>
>>>>>> >>>>> %.12s truly limit the original string output length (precision)
>>>>>> >>>>>
>>>>>> >>>>>
>>>>>> >>>>> Signed-off-by: Chen Gang<[email protected]>
>>>>>> >>>>> ---
>>>>>> >>>>> arch/powerpc/kernel/nvram_64.c | 2 +-
>>>>>> >>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>> >>>>>
>>>>>> >>>>> diff --git a/arch/powerpc/kernel/nvram_64.c b/arch/powerpc/kernel/nvram_64.c
>>>>>> >>>>> index bec1e93..57bf6d2 100644
>>>>>> >>>>> --- a/arch/powerpc/kernel/nvram_64.c
>>>>>> >>>>> +++ b/arch/powerpc/kernel/nvram_64.c
>>>>>> >>>>> @@ -202,7 +202,7 @@ static void __init nvram_print_partitions(char * label)
>>>>>> >>>>> printk(KERN_WARNING "--------%s---------\n", label);
>>>>>> >>>>> printk(KERN_WARNING "indx\t\tsig\tchks\tlen\tname\n");
>>>>>> >>>>> list_for_each_entry(tmp_part,&nvram_partitions, partition) {
>>>>>> >>>>> - printk(KERN_WARNING "%4d \t%02x\t%02x\t%d\t%12s\n",
>>>>>> >>>>> + printk(KERN_WARNING "%4d \t%02x\t%02x\t%d\t%12.12s\n",
>> >
>> > First, this code in inside NVRAM_DEBUG which is used only for debug purpose and
>> > AFAIK, all partition names are less than 20 character. So I don't think we need
> Sorry.. I meant 12 character.

Please see line 283:
"strncpy(part->header.name, "wwwwwwwwwwww", 12);"
(it is not a NUL terminated string, and the length is 12)

And also, can we be sure that all partition names should be less than 12
characters ?

All together, I think we still need %12.12s to protect the memory.

Thanks.

--
Chen Gang

Asianux Corporation