[Devel] Re: [RFC v14-rc][PATCH 04/23] General infrastructure for checkpoint restart

Oren Laadan orenl at cs.columbia.edu
Fri Mar 20 14:34:20 PDT 2009



Serge E. Hallyn wrote:
> Quoting Oren Laadan (orenl at cs.columbia.edu):
>> Changelog[v14]:
>>   - Define sys_checkpoint(0,...) as asking for a self-checkpoint (Serge)
> 
> Thanks.
> 
>>   - Revert use of 'pr_fmt' to avoid tainting whom includes us (Nathan Lynch)
>>   - Explicitly indicate length of UTS fields in header
>>   - Discard field 'h->parent'
> 
> Nice.
> 
>> +	uts = utsname();
>> +	ret = cr_write_buffer(ctx, uts->release, __NEW_UTS_LEN);
>> +	if (ret < 0)
>> +		return ret;
>> +	ret = cr_write_buffer(ctx, uts->version, __NEW_UTS_LEN);
>> +	if (ret < 0)
>> +		return ret;
>> +	ret = cr_write_buffer(ctx, uts->machine, __NEW_UTS_LEN);
> 
> ...
> 
>> +	/* FIX: verify compatibility of release, version and machine */
>> +	ret = cr_read_obj_type(ctx, uts_buf, __NEW_UTS_LEN, CR_HDR_BUFFER);
>> +	if (ret < 0)
>> +		goto out;
>> +	ret = cr_read_obj_type(ctx, uts_buf, __NEW_UTS_LEN, CR_HDR_BUFFER);
>> +	if (ret < 0)
>> +		goto out;
>> +	ret = cr_read_obj_type(ctx, uts_buf, __NEW_UTS_LEN, CR_HDR_BUFFER);
> 
> The new_utsname fields actually have __NEW_UTS_LEN+1 chars.  So
> if hostname happens to be full (__NEW_UTS_LEN chars plus a final
> null), won't you end up without the trailing null here?

Using cr_write_buffer() instead of cr_write_string() ensures that it
saves and restores exactly __NEW_UTS_LEN bytes, regardless of the null,
so I'd think it's safe (yeah, we could save a few bytes - like a drop
in the ocean).

Oren.

_______________________________________________
Containers mailing list
Containers at lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/containers




More information about the Devel mailing list