On Tue, Sep 01, 2009 at 11:49:14AM -0400, Miloslav Trmac wrote:
----- "Daniel P. Berrange" <berrange(a)redhat.com>
wrote:
> > + /* A qcow passphrase is up to 16 bytes, with any data following a NUL
> > + ignored. Prohibit control and non-ASCII characters to avoid possible
> > + unpleasant surprises with the qemu monitor input mechanism. */
> > + fd = open("/dev/urandom", O_RDONLY);
> > + if (fd < 0) {
> > + virStorageReportError(conn, VIR_ERR_INTERNAL_ERROR, "%s",
> > + _("Cannot open /dev/urandom"));
> > + goto cleanup;
> > + }
> > + i = 0;
> > + while (i < sizeof (value)) {
> > + ssize_t r;
> > +
> > + while ((r = read(fd, value + i, 1)) == -1 && errno == EINTR)
> > + ;
> > + if (r <= 0) {
> > + virStorageReportError(conn, VIR_ERR_INTERNAL_ERROR,
"%s",
> > + _("Cannot read from
/dev/urandom"));
> > + goto cleanup;
> > + }
> > + if (value[i] >= 0x20 && value[i] <= 0x7E)
> > + i++; /* Got an acceptable character */
> > + }
> > + close(fd);
>
> I reckon this snippet of code could usefully be put into the util.h file
> as virFileGenerateRandomkey(), or alternatively perhaps secret_conf.h,
> as virSecretGenerateRandomKey(unsigned char *buf, size_t buflen);
This code, with its limitation to ASCII characters, is qcow/qemu-specific.
Ok, lets leave it in the QEMU driver file then
Regards,
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 :|