Re: [PATCH v4] staging: wlags49_h2: strncpy, need checking the memory length

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 05/15/2013 03:40 PM, Dan Carpenter wrote:
>> The 2 variables for comparing: one is 'u8', the other is 'int'. Since
>> > 'int' is 'bigger' than 'u8', I like cast to 'int' (it is the 'default
>> > habit') ;-)
>> > 
>> > Could you describe the details again for why 'u8' is better than 'int' ?
>> > 
> I explained this at length in an earlier email but here is the short
> version again.  There are two bugs people introduce with min_t()
> casting.
> 
> 1) Casting high unsigned values to negative.
> 2) Truncating the value.
> 
> I tend to worry more about casting to negative because those are
> more common and have worse effects for security.  In this case,
> either int or u8 work, but when someone audits the code the cast to
> int is a red flag and needs to be reviewed.

Thank you for your precious details:
  if using 'int', need worry about 1) Casting high unsigned to negative
  if using 'u8', need worry about 2) Truncating the value

But at least for current gcc version under x86, I have given a test for
it, the result seems OK (but in my memory, some compilers will get the
different results).

Please see below:

------------------------code begin------------------------------------

#include <stdio.h>

int main()
{
	unsigned char a = 0xff;
	int b = 20;
	int c = a;

	char x = -1;
	unsigned int y = 10;
	unsigned int z = x;

	if (a < b)
		printf("\na < b: c = %x, b = %x, a = %x\n", c, b, a);
	else
		printf("\na >= b: c = %x, b = %x, a = %x\n", c, b, a);

	if (x < y)
		printf("\nx < y: x = %x, y = %x, z = %x\n", x, y, z);
	else
		printf("\nx >= y: x = %x, y = %x, z = %x\n", x, y, z);

	return 0;
}

------------------------code end--------------------------------------

[root@gchenlinux tmp]# cc -Wall -O2 -g -o test test.c
[root@gchenlinux tmp]# ./test

a >= b: c = ff, b = 14, a = ff

x >= y: x = ffffffff, y = a, z = ffffffff



Thanks.
-- 
Chen Gang

Asianux Corporation
_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel




[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux