On 10/06/2015 09:19 AM, Michal Privoznik wrote:
> On 23.09.2015 22:54, John Ferlan wrote:
>>
https://bugzilla.redhat.com/show_bug.cgi?id=1256999
>>
>> When creating a copy of the 'authdef', need to take into account the
>> slight variation between <disk> and <pool> before blindly copying
>> the 'authType' field. This ensures virStorageAuthDefFormat will
>> properly format the <auth> XML for a <disk>.
>>
>> Signed-off-by: John Ferlan <jferlan(a)redhat.com>
>> ---
>> src/util/virstoragefile.c | 7 ++++++-
>> 1 file changed, 6 insertions(+), 1 deletion(-)
>>
>> diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
>> index 2aa1d90..0b72cb3 100644
>> --- a/src/util/virstoragefile.c
>> +++ b/src/util/virstoragefile.c
>> @@ -1522,7 +1522,12 @@ virStorageAuthDefCopy(const virStorageAuthDef *src)
>> /* Not present for storage pool, but used for disk source */
>> if (VIR_STRDUP(ret->secrettype, src->secrettype) < 0)
>> goto error;
>> - ret->authType = src->authType;
>> + /* A <disk> uses secrettype, while a <pool> uses authType, so
>> + * if we have a secrettype, then don't copy authType; otherwise,
>> + * we will format the authType in <disk>
>> + */
>> + if (!ret->secrettype)
>> + ret->authType = src->authType;
>> ret->secretType = src->secretType;
>
> This seems like we have a bug somewhere if authType and secretType are
> both set at the same time. Because the way I understand the code is that
> only one from the pair can be non-null at the time. If so, I think we
> should fix the bug and drop this if() here.
The short answer is the bug was written long ago when disk and pool's
were "allowed" to use a different formatted authdef XML and now we're
stuck with it. The longer answer and details follow.
Oh, well. ACK then. If you want to propose any follow up patch, feel
free :-)
Michal