[libvirt] [PATCH REPOST 2/4] storage: Use virRandomBytes for virStorageGenerateQcowPassphrase

John Ferlan jferlan at redhat.com
Tue Jun 7 11:43:46 UTC 2016



On 06/07/2016 03:35 AM, Ján Tomko wrote:
> On Mon, Jun 06, 2016 at 02:13:47PM -0400, John Ferlan wrote:
>> Use the common API
>>
>> Signed-off-by: John Ferlan <jferlan at redhat.com>
>> ---
>>  src/storage/storage_backend.c   | 10 +++++++---
>>  src/util/virstorageencryption.c | 42 +++++++++++++++--------------------------
>>  src/util/virstorageencryption.h |  4 ++--
>>  3 files changed, 24 insertions(+), 32 deletions(-)
>>

I'll just drop these two and the 4th patch - although I did send a patch
to fix the return value checking of virRandomBytes.

Tks -

John

>> diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c
>> index 8f03a6e..fd432c8 100644
>> --- a/src/storage/storage_backend.c
>> +++ b/src/storage/storage_backend.c
>> @@ -597,7 +597,7 @@ virStorageGenerateQcowEncryption(virConnectPtr conn,
>>      virStorageEncryptionSecretPtr enc_secret = NULL;
>>      virSecretPtr secret = NULL;
>>      char *xml;
>> -    unsigned char value[VIR_STORAGE_QCOW_PASSPHRASE_SIZE];
>> +    unsigned char *value = NULL;
> 
> On a 64-bit system, the original array is only twice the size,
> I don't think switching to an allocated buffer is worth it.
> 
>>      int ret = -1;
>>  
>>      if (conn->secretDriver == NULL ||
>> @@ -641,10 +641,13 @@ virStorageGenerateQcowEncryption(virConnectPtr conn,
>>      }
>>      VIR_FREE(xml);
>>  
>> -    if (virStorageGenerateQcowPassphrase(value) < 0)
>> +    if (!(value =
>> +          virStorageGenerateQcowPassphrase(VIR_STORAGE_QCOW_PASSPHRASE_SIZE)))
>>          goto cleanup;
>>  
>> -    if (conn->secretDriver->secretSetValue(secret, value, sizeof(value), 0) < 0)
>> +    if (conn->secretDriver->secretSetValue(secret, value,
>> +                                           VIR_STORAGE_QCOW_PASSPHRASE_SIZE,
>> +                                           0) < 0)
>>          goto cleanup;
>>  
>>      enc_secret->type = VIR_STORAGE_ENCRYPTION_SECRET_TYPE_PASSPHRASE;
>> @@ -666,6 +669,7 @@ virStorageGenerateQcowEncryption(virConnectPtr conn,
>>      virBufferFreeAndReset(&buf);
>>      virSecretDefFree(def);
>>      VIR_FREE(enc_secret);
>> +    VIR_FREE(value);
>>      return ret;
>>  }
>>  
>> diff --git a/src/util/virstorageencryption.c b/src/util/virstorageencryption.c
>> index 8105158..00d1ff7 100644
>> --- a/src/util/virstorageencryption.c
>> +++ b/src/util/virstorageencryption.c
>> @@ -1,7 +1,7 @@
>>  /*
>>   * virstorageencryption.c: volume encryption information
>>   *
>> - * Copyright (C) 2009-2014 Red Hat, Inc.
>> + * Copyright (C) 2009-2014, 2016 Red Hat, Inc.
>>   *
>>   * This library is free software; you can redistribute it and/or
>>   * modify it under the terms of the GNU Lesser General Public
>> @@ -34,6 +34,7 @@
>>  #include "virerror.h"
>>  #include "viruuid.h"
>>  #include "virfile.h"
>> +#include "virrandom.h"
>>  
>>  #define VIR_FROM_THIS VIR_FROM_STORAGE
>>  
>> @@ -284,36 +285,23 @@ virStorageEncryptionFormat(virBufferPtr buf,
>>      return 0;
>>  }
>>  
>> -int
>> -virStorageGenerateQcowPassphrase(unsigned char *dest)
>> +unsigned char *
>> +virStorageGenerateQcowPassphrase(size_t nbytes)
> 
> The length is already implied by the function name.
> 
> Also, since it's so specific and short, I would rather open-code it.
> 
> Jan
> 




More information about the libvir-list mailing list