[libvirt] [PATCH] locking: avoid dereferencing a NULL pointer
Alex Jia
ajia at redhat.com
Thu Sep 22 01:18:24 UTC 2011
On 09/22/2011 04:12 AM, Eric Blake wrote:
> On 09/21/2011 12:10 PM, ajia at redhat.com wrote:
>> From: Alex Jia<ajia at redhat.com>
>>
>> * src/locking/lock_driver_sanlock.c: in fact, virStrcpy calls
>> virStrncpy(dest, src, strlen(src), destbytes) then return result,
>> if 'path' is NULL, it means 'src' is also NULL, strlen(NULL) will
>> dereference a NULL pointer, which probably causes a segmentation
>> fault.
>>
>> Signed-off-by: Alex Jia<ajia at redhat.com>
>> ---
>> src/locking/lock_driver_sanlock.c | 2 +-
>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/src/locking/lock_driver_sanlock.c
>> b/src/locking/lock_driver_sanlock.c
>> index 2d72510..8c6d873 100644
>> --- a/src/locking/lock_driver_sanlock.c
>> +++ b/src/locking/lock_driver_sanlock.c
>> @@ -158,7 +158,7 @@ static int virLockManagerSanlockSetupLockspace(void)
>> memcpy(ls.name, VIR_LOCK_MANAGER_SANLOCK_AUTO_DISK_LOCKSPACE,
>> SANLK_NAME_LEN);
>> ls.host_id = 0; /* Doesn't matter for initialization */
>> ls.flags = 0;
>> - if (!virStrcpy(ls.host_id_disk.path, path, SANLK_PATH_LEN)) {
>> + if (!path || !virStrcpy(ls.host_id_disk.path, path,
>> SANLK_PATH_LEN)) {
>> virLockError(VIR_ERR_INTERNAL_ERROR,
>> _("Lockspace path '%s' exceeded %d characters"),
>> path, SANLK_PATH_LEN);
>
> NACK. The prior virAsprintf guarantees that path is non-NULL at this
> point. Rather, the real problem that Coverity is complaining about
> here is that the only way to get to the error_unlink: label is if path
> is already non-NULL, so that the 'if (path)' in that label is redundant.
>
Yeah, you're right, I will commit a new patch, because this subject is
inappropriate, so I haven't naming v2 for this patch, the new patch
subject is "[libvirt] [PATCH] locking: remove redundant codes".
Thanks,
Alex
More information about the libvir-list
mailing list