On Fri, Sep 11, 2009 at 06:00:07PM +0200, Daniel Veillard wrote:
On Fri, Sep 11, 2009 at 03:19:17PM +0100, Daniel P. Berrange wrote:
> Convert all the secret/storage encryption APIs / wire format to
> handle UUIDs in raw format instead of non-canonical printable
> format. Guarentees data format correctness.
> + *
> + * Returns a new secret object or NULL in case of failure. If the
> + * secret cannot be found, then VIR_ERR_NO_SECRET error is raised.
> + */
> +virSecretPtr
> +virSecretLookupByUUIDString(virConnectPtr conn, const char *uuidstr)
> +{
> + int raw[VIR_UUID_BUFLEN], i;
> + unsigned char uuid[VIR_UUID_BUFLEN];
> + int ret;
> +
> + DEBUG("conn=%p, uuidstr=%s", conn, uuidstr);
> +
> + virResetLastError();
> +
> + if (!VIR_IS_CONNECT(conn)) {
> + virLibConnError(NULL, VIR_ERR_INVALID_CONN, __FUNCTION__);
> + return (NULL);
> + }
> + if (uuidstr == NULL) {
> + virLibConnError(conn, VIR_ERR_INVALID_ARG, __FUNCTION__);
> + goto error;
> + }
> + /* XXX: sexpr_uuid() also supports 'xxxx-xxxx-xxxx-xxxx' format.
> + * We needn't it here. Right?
> + */
Hum, I would rather use virUUIDParse() to make sure there is no
confusion, a public API should be tolerant about this I think
and it's cleaner to reuse it !
This was in fact just cut+paste from the existing APIs of similar
name in libvirt.c. I'll send another patch which fixes them all to
use virUUIDParse.
> + ret = sscanf(uuidstr,
> + "%02x%02x%02x%02x-"
> + "%02x%02x-"
> + "%02x%02x-"
> + "%02x%02x-"
> + "%02x%02x%02x%02x%02x%02x",
> + raw + 0, raw + 1, raw + 2, raw + 3,
> + raw + 4, raw + 5, raw + 6, raw + 7,
> + raw + 8, raw + 9, raw + 10, raw + 11,
> + raw + 12, raw + 13, raw + 14, raw + 15);
> +
> + if (ret!=VIR_UUID_BUFLEN) {
> + virLibConnError(conn, VIR_ERR_INVALID_ARG, __FUNCTION__);
> + goto error;
> + }
> + for (i = 0; i < VIR_UUID_BUFLEN; i++)
> + uuid[i] = raw[i] & 0xFF;
ACK, overall an important cleanup, as it affects the API and the
network format !
Daniel
--
|: Red Hat, Engineering, London -o-
http://people.redhat.com/berrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org -o-
http://ovirt.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|