On Tue, Sep 01, 2009 at 11:49:14AM -0400, Miloslav Trmac wrote: > ----- "Daniel P. Berrange" <berrange@xxxxxxxxxx> 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 :| -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list