Re: [libvirt] [PATCH 09/11] storage: Use the internal API to get the secret value instead
On 07/06/13 01:26, John Ferlan wrote: On 05/28/2013 02:39 AM, Osier Yang wrote: Without the flag VIR_SECRET_GET_VALUE_INTERNAL_CALL, there is no way to get the value of private secret. And error out if the secret value is not found. --- src/storage/storage_backend_rbd.c | 13 - 1 file changed, 12 insertions(+), 1 deletion(-) Is this patch separatable? That is - is it required for this set of changes or is it out of band enough to be its own patch. separatable, it's the thing I found when coding on the way. diff --git a/src/storage/storage_backend_rbd.c b/src/storage/storage_backend_rbd.c index 953a8ee..d66d3f9 100644 --- a/src/storage/storage_backend_rbd.c +++ b/src/storage/storage_backend_rbd.c @@ -23,6 +23,7 @@ #include config.h +#include datatypes.h #include virerror.h #include storage_backend_rbd.h #include storage_conf.h @@ -88,7 +89,17 @@ static int virStorageBackendRBDOpenRADOSConn(virStorageBackendRBDStatePtr *ptr, goto cleanup; } -secret_value = virSecretGetValue(secret, secret_value_size, 0); +secret_value = conn-secretDriver-secretGetValue(secret, secret_value_size, 0, + VIR_SECRET_GET_VALUE_INTERNAL_CALL); + There are callers to this function that have set ATTRIBUTE_UNUSED on the 'conn' parameter. Now this code uses it - so it seems you have some more checking to do. See virStorageBackendRBDRefreshPool() and virStorageBackendRBDResizeVol() Using the same logic as before I see that storage_driver.c and storageDriverAutostart() will call the backend-refreshPool with NULL and that will cause you issues in this code. Okay. Osier -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
Re: [libvirt] [PATCH 09/11] storage: Use the internal API to get the secret value instead
On 05/28/2013 02:39 AM, Osier Yang wrote: Without the flag VIR_SECRET_GET_VALUE_INTERNAL_CALL, there is no way to get the value of private secret. And error out if the secret value is not found. --- src/storage/storage_backend_rbd.c | 13 - 1 file changed, 12 insertions(+), 1 deletion(-) Is this patch separatable? That is - is it required for this set of changes or is it out of band enough to be its own patch. diff --git a/src/storage/storage_backend_rbd.c b/src/storage/storage_backend_rbd.c index 953a8ee..d66d3f9 100644 --- a/src/storage/storage_backend_rbd.c +++ b/src/storage/storage_backend_rbd.c @@ -23,6 +23,7 @@ #include config.h +#include datatypes.h #include virerror.h #include storage_backend_rbd.h #include storage_conf.h @@ -88,7 +89,17 @@ static int virStorageBackendRBDOpenRADOSConn(virStorageBackendRBDStatePtr *ptr, goto cleanup; } -secret_value = virSecretGetValue(secret, secret_value_size, 0); +secret_value = conn-secretDriver-secretGetValue(secret, secret_value_size, 0, + VIR_SECRET_GET_VALUE_INTERNAL_CALL); + There are callers to this function that have set ATTRIBUTE_UNUSED on the 'conn' parameter. Now this code uses it - so it seems you have some more checking to do. See virStorageBackendRBDRefreshPool() and virStorageBackendRBDResizeVol() Using the same logic as before I see that storage_driver.c and storageDriverAutostart() will call the backend-refreshPool with NULL and that will cause you issues in this code. John +if (!secret_value) { +virReportError(VIR_ERR_INTERNAL_ERROR, + _(could not get the value of the secret + for username %s), + pool-def-source.auth.cephx.username); +goto cleanup; +} + base64_encode_alloc((char *)secret_value, secret_value_size, rados_key); memset(secret_value, 0, secret_value_size); -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list
[libvirt] [PATCH 09/11] storage: Use the internal API to get the secret value instead
Without the flag VIR_SECRET_GET_VALUE_INTERNAL_CALL, there is no way to get the value of private secret. And error out if the secret value is not found. --- src/storage/storage_backend_rbd.c | 13 - 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/storage/storage_backend_rbd.c b/src/storage/storage_backend_rbd.c index 953a8ee..d66d3f9 100644 --- a/src/storage/storage_backend_rbd.c +++ b/src/storage/storage_backend_rbd.c @@ -23,6 +23,7 @@ #include config.h +#include datatypes.h #include virerror.h #include storage_backend_rbd.h #include storage_conf.h @@ -88,7 +89,17 @@ static int virStorageBackendRBDOpenRADOSConn(virStorageBackendRBDStatePtr *ptr, goto cleanup; } -secret_value = virSecretGetValue(secret, secret_value_size, 0); +secret_value = conn-secretDriver-secretGetValue(secret, secret_value_size, 0, + VIR_SECRET_GET_VALUE_INTERNAL_CALL); + +if (!secret_value) { +virReportError(VIR_ERR_INTERNAL_ERROR, + _(could not get the value of the secret + for username %s), + pool-def-source.auth.cephx.username); +goto cleanup; +} + base64_encode_alloc((char *)secret_value, secret_value_size, rados_key); memset(secret_value, 0, secret_value_size); -- 1.8.1.4 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list