[Libguestfs] [PATCH v2v v2 1/2] rhv-upload: Validate UUIDs passed to -oo rhv-disk-uuid (RHBZ#1789279)
Pino Toscano
ptoscano at redhat.com
Mon Feb 24 09:26:16 UTC 2020
On Wednesday, 29 January 2020 15:54:21 CET Martin Kletzander wrote:
> On Wed, Jan 29, 2020 at 03:34:48PM +0100, Martin Kletzander wrote:
> >The validation helps us fail early and with a sensible error message. The NIL
> >UUID is not valid for oVirt, but other than that there is no other logic in
> >there merely because the UUID types are a matter of the generator and they are
> >just forwarded in this partucular case.
> >
> >Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
> >---
> > v2v/output_rhv_upload.ml | 12 ++++++++++++
> > 1 file changed, 12 insertions(+)
> >
> >diff --git a/v2v/output_rhv_upload.ml b/v2v/output_rhv_upload.ml
> >index 14153db36897..6482460f8de8 100644
> >--- a/v2v/output_rhv_upload.ml
> >+++ b/v2v/output_rhv_upload.ml
> >@@ -49,6 +49,16 @@ after their uploads (if you do, you must supply one for each disk):
> > -oo rhv-disk-uuid=UUID Disk UUID
> > ")
> >
> >+let is_nonnil_uuid uuid =
> >+ let nil_uuid = "00000000-0000-0000-0000-000000000000" in
> >+ let rex_uuid = lazy (
> >+ let hex = "[a-fA-F0-9]" in
> >+ let str = sprintf "^%s{8}-%s{4}-%s{4}-%s{4}-%s{12}$" hex hex hex hex hex in
> >+ PCRE.compile str
> >+ ) in
> >+ if uuid = nil_uuid then false
> >+ else PCRE.matches rex_uuid uuid
> >+
> > let parse_output_options options =
> > let rhv_cafile = ref None in
> > let rhv_cluster = ref None in
> >@@ -71,6 +81,8 @@ let parse_output_options options =
> > | "rhv-verifypeer", "" -> rhv_verifypeer := true
> > | "rhv-verifypeer", v -> rhv_verifypeer := bool_of_string v
> > | "rhv-disk-uuid", v ->
> >+ if not (is_nonnil_uuid v) then
> >+ error (f_"-o rhv-upload: invalid UUID for -oo rhv-disk-uuid");
> > rhv_disk_uuids := Some (v :: (Option.default [] !rhv_disk_uuids))
> > | k, _ ->
> > error (f_"-o rhv-upload: unknown output option ‘-oo %s’") k
>
> I was too fast with the sending, consider this squashed in, (the fixed version
> is in my github repo [1]):
>
> diff --git i/v2v/output_rhv_upload.ml w/v2v/output_rhv_upload.ml
> index 6482460f8de8..c06c4c1844de 100644
> --- i/v2v/output_rhv_upload.ml
> +++ w/v2v/output_rhv_upload.ml
> @@ -57,7 +57,7 @@ let is_nonnil_uuid uuid =
> PCRE.compile str
> ) in
> if uuid = nil_uuid then false
> - else PCRE.matches rex_uuid uuid
> + else PCRE.matches (Lazy.force rex_uuid) uuid
>
> let parse_output_options options =
> let rhv_cafile = ref None in
> --
With the squashed fix, this LGTM.
Thanks,
--
Pino Toscano
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <http://listman.redhat.com/archives/libguestfs/attachments/20200224/6b9bfa29/attachment.sig>
More information about the Libguestfs
mailing list