Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 29 May 2003 19:47:03 -0400 (EDT)
From:      "Adam Migus" <adam@migus.org>
To:        <adam@migus.org>
Cc:        rwatson@freebsd.org
Subject:   Re: PERFORCE change 32072 for review
Message-ID:  <45980.205.227.136.1.1054252023.squirrel@mail.migus.org>
In-Reply-To: <41432.205.227.136.1.1054251755.squirrel@mail.migus.org>
References:  <200305292314.h4TNEYbs070967@repoman.freebsd.org> <41432.205.227.136.1.1054251755.squirrel@mail.migus.org>

next in thread | previous in thread | raw e-mail | index | archive | help

Robert,
Sorry I failed to address a point.  I assumed when
writing the code that the caller would pass in a large
enough string, as that assumption is made elsewhere in
code called at this layer in the framework.  To be
explicit, I think this change is therefor rendundant.
Also I am curious, asside from intentionally passing
in a string that's too short to hold the result can
you make this code panic?

Adam

<quote who="Adam Migus">
> Robert,
> len can never exceed size which is passed in as the
> size of the string.  Therefor the NULL will always
> land inside the string.
> How exactly does snprintf() fail?
>
> Adam
>
> <quote who="Robert Watson">
>> http://perforce.freebsd.org/chv.cgi?CH=32072
>>
>> Change 32072 by rwatson@rwatson_tislabs on
>> 2003/05/29 16:14:02
>>
>> 	Temporary work-around for overflows in
>> externalization of
>> 	compartment strings in the Biba and MLS policies.
>> Validate
>> 	that the nul we slap down in fact lands inside
>> the
>> string.
>> 	This code generally needs cleaning up, since it
>> fails to
>> 	handle failures by snprintf().  If the provided
>> string is
>> 	too short, this result is preferable to kernel
>> panics, etc.
>>
>> Affected files ...
>>
>> ..
>> //depot/projects/trustedbsd/mac/sys/security/mac_biba/mac_biba.c#209
>> edit ..
>> //depot/projects/trustedbsd/mac/sys/security/mac_mls/mac_mls.c#167
>> edit
>>
>> Differences ...
>>
>> ====
>> //depot/projects/trustedbsd/mac/sys/security/mac_biba/mac_biba.c#209
>> (text+ko) ====
>>
>> @@ -583,7 +583,11 @@
>>  		} while(bit <= MAC_BIBA_MAX_COMPARTMENTS);
>>
>>  		len = size - left - 1;
>> -		string[len] = '\0';
>> +		if (len > 0 && len < size)
>> +			string[len] = '\0';
>> +		else
>> +			string[0] = '\0';
>> +
>>  		return (len);
>>
>>  	default:
>>
>> ====
>> //depot/projects/trustedbsd/mac/sys/security/mac_mls/mac_mls.c#167
>> (text+ko) ====
>>
>> @@ -547,7 +547,10 @@
>>  		} while(bit <= MAC_MLS_MAX_COMPARTMENTS);
>>
>>  		len = size - left - 1;
>> -		string[len] = '\0';
>> +		if (len > 0 && len < size)
>> +			string[len] = '\0';
>> +		else
>> +			string[0] = '\0';
>>  		return (len);
>>
>>  	default:
>
>
> --
> Adam Migus - Research Scientist
> Network Associates Laboratories
> (http://www.nailabs.com)
> FreeBSD (http://www.freebsd.org)
> God may be subtle, but He isn't plain mean.  --
> Albert
> Einstein


-- 
Adam Migus - Research Scientist
Network Associates Laboratories (http://www.nailabs.com)
FreeBSD (http://www.freebsd.org)
God may be subtle, but He isn't plain mean.  -- Albert
Einstein





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?45980.205.227.136.1.1054252023.squirrel>