On Tue, Mar 29, 2016 at 07:11:34PM -0400, John Ferlan wrote: > Using the existing virUUIDGenerateRandomBytes, move API to virutil.c > and add it to libvirt_private.syms. > > This will be used as a fallback for generating a domain master key. > > Signed-off-by: John Ferlan <jferlan@xxxxxxxxxx> > --- > src/libvirt_private.syms | 1 + > src/util/virutil.c | 36 ++++++++++++++++++++++++++++++++++++ > src/util/virutil.h | 3 +++ > src/util/viruuid.c | 30 +----------------------------- > 4 files changed, 41 insertions(+), 29 deletions(-) > > diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms > index 7c44047..3d54c39 100644 > --- a/src/libvirt_private.syms > +++ b/src/libvirt_private.syms > @@ -2422,6 +2422,7 @@ virEnumToString; > virFindFCHostCapableVport; > virFindSCSIHostByPCI; > virFormatIntDecimal; > +virGenerateRandomBytes; > virGetDeviceID; > virGetDeviceUnprivSGIO; > virGetEnvAllowSUID; > diff --git a/src/util/virutil.c b/src/util/virutil.c > index b401f8d..c55f6f6 100644 > --- a/src/util/virutil.c > +++ b/src/util/virutil.c > @@ -2669,3 +2669,39 @@ virMemoryMaxValue(bool capped) > else > return LLONG_MAX; > } > + > + > +/** > + * virGenerateRandomBytes > + * @buf: Pointer to location to store bytes > + * @buflen: Number of bytes to store > + * > + * Generate a stream of random bytes into @buf of size @buflen > + */ > +int > +virGenerateRandomBytes(unsigned char *buf, > + size_t buflen) > +{ > + int fd; > + > + if ((fd = open("/dev/urandom", O_RDONLY)) < 0) > + return errno; > + > + while (buflen > 0) { > + ssize_t n; > + > + if ((n = read(fd, buf, buflen)) <= 0) { > + if (errno == EINTR) > + continue; > + VIR_FORCE_CLOSE(fd); > + return n < 0 ? errno : ENODATA; > + } > + > + buf += n; > + buflen -= n; > + } > + > + VIR_FORCE_CLOSE(fd); > + > + return 0; > +} > diff --git a/src/util/virutil.h b/src/util/virutil.h > index b121de0..a398b38 100644 > --- a/src/util/virutil.h > +++ b/src/util/virutil.h > @@ -254,6 +254,9 @@ unsigned long long virMemoryLimitTruncate(unsigned long long value); > bool virMemoryLimitIsSet(unsigned long long value); > unsigned long long virMemoryMaxValue(bool ulong); > > +int virGenerateRandomBytes(unsigned char *buf, size_t buflen) > + ATTRIBUTE_NONNULL(1) ATTRIBUTE_RETURN_CHECK; > + Please call this virRandomBytes() and put it in virrandom.{c,h} ACK if you make that change before applying. Regards, Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list