[systemd-devel] [PATCH] cryptsetup: check that password is not null

Thomas H.P. Andersen phomes at gmail.com
Thu Jun 12 14:49:35 PDT 2014


On Thu, Jun 12, 2014 at 11:08 PM, Greg KH <gregkh at linuxfoundation.org> wrote:
> On Thu, Jun 12, 2014 at 10:55:50PM +0200, Thomas H.P. Andersen wrote:
>> From: Thomas Hindoe Paaboel Andersen <phomes at gmail.com>
>>
>> Beef up the assert to protect against passing null to strlen.
>>
>> Found with scan-build.
>> ---
>>  src/cryptsetup/cryptsetup.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c
>> index 812b32f..a67d85e 100644
>> --- a/src/cryptsetup/cryptsetup.c
>> +++ b/src/cryptsetup/cryptsetup.c
>> @@ -344,7 +344,7 @@ static int attach_tcrypt(struct crypt_device *cd,
>>
>>          assert(cd);
>>          assert(name);
>> -        assert(key_file || passwords);
>> +        assert(key_file || (passwords && passwords[0]));
>
> Shouldn't strlen of an "empty" string just return 0?

Passing null to strlen is undefined behavior and seg faults reliably for me.

> What is this fixing really?

Just a theoretical problem found with static analysis. Not sure if we
can actually hit the problem but the current assert gives a false
sense of security.

> thanks,
>
> greg k-h


More information about the systemd-devel mailing list