[Libguestfs] [PATCH v2v v3 1/2] rhv-upload: Validate UUIDs passed to -oo rhv-disk-uuid (RHBZ#1789279)
Richard W.M. Jones
rjones at redhat.com
Wed Mar 11 22:19:49 UTC 2020
On Wed, Mar 11, 2020 at 03:54:33PM +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 9e60d8c73150..e833569318b3 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 (Lazy.force 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
> --
It needs to document the new option in docs/virt-v2v-output-rhv.pod
and in v2v/output_rhv_upload.ml in the print_output_options ()
function a little bit earlier in the file.
Apart from this the patch series is fine. Personally I think I would
have jammed the two patches into one, not sure I follow why they're
separate, but that's just a style thing.
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
virt-df lists disk usage of guests without needing to install any
software inside the virtual machine. Supports Linux and Windows.
http://people.redhat.com/~rjones/virt-df/
More information about the Libguestfs
mailing list