diff mbox series

xl: properly dispose of vTPM struct instance

Message ID 73a01ddf-6090-4fda-a8c0-5703e7c9e81b@suse.com (mailing list archive)
State New
Headers show
Series xl: properly dispose of vTPM struct instance | expand

Commit Message

Jan Beulich Jan. 14, 2025, 8:13 a.m. UTC
The backend_domname field requires separate freeing; make sure to call
libxl_device_vtpm_dispose() also on respective error paths.

Coverity-ID: 1638719
Fixes: dde22055ac3a ("libxl: add vtpm support")
Signed-off-by: Jan Beulich <jbeulich@suse.com>

Comments

Andrew Cooper Jan. 14, 2025, 9:28 a.m. UTC | #1
On 14/01/2025 8:13 am, Jan Beulich wrote:
> The backend_domname field requires separate freeing; make sure to call
> libxl_device_vtpm_dispose() also on respective error paths.
>
> Coverity-ID: 1638719
> Fixes: dde22055ac3a ("libxl: add vtpm support")
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Oleksii Kurochko Jan. 14, 2025, 11:25 a.m. UTC | #2
On 1/14/25 9:13 AM, Jan Beulich wrote:
> The backend_domname field requires separate freeing; make sure to call
> libxl_device_vtpm_dispose() also on respective error paths.
>
> Coverity-ID: 1638719
> Fixes: dde22055ac3a ("libxl: add vtpm support")
> Signed-off-by: Jan Beulich <jbeulich@suse.com>

R-Acked-By: Oleksii Kurochko <oleksii.kurochko@gmail.com>

Thanks.

~ Oleksii

>
> --- a/tools/xl/xl_vtpm.c
> +++ b/tools/xl/xl_vtpm.c
> @@ -44,12 +44,14 @@ int main_vtpmattach(int argc, char **arg
>           if (MATCH_OPTION("uuid", *argv, oparg)) {
>               if(libxl_uuid_from_string(&(vtpm.uuid), oparg)) {
>                   fprintf(stderr, "Invalid uuid specified (%s)\n", oparg);
> +                libxl_device_vtpm_dispose(&vtpm);
>                   return 1;
>               }
>           } else if (MATCH_OPTION("backend", *argv, oparg)) {
>               replace_string(&vtpm.backend_domname, oparg);
>           } else {
>               fprintf(stderr, "unrecognized argument `%s'\n", *argv);
> +            libxl_device_vtpm_dispose(&vtpm);
>               return 1;
>           }
>       }
> @@ -65,6 +67,7 @@ int main_vtpmattach(int argc, char **arg
>   
>       if (libxl_device_vtpm_add(ctx, domid, &vtpm, 0)) {
>           fprintf(stderr, "libxl_device_vtpm_add failed.\n");
> +        libxl_device_vtpm_dispose(&vtpm);
>           return 1;
>       }
>       libxl_device_vtpm_dispose(&vtpm);
diff mbox series

Patch

--- a/tools/xl/xl_vtpm.c
+++ b/tools/xl/xl_vtpm.c
@@ -44,12 +44,14 @@  int main_vtpmattach(int argc, char **arg
         if (MATCH_OPTION("uuid", *argv, oparg)) {
             if(libxl_uuid_from_string(&(vtpm.uuid), oparg)) {
                 fprintf(stderr, "Invalid uuid specified (%s)\n", oparg);
+                libxl_device_vtpm_dispose(&vtpm);
                 return 1;
             }
         } else if (MATCH_OPTION("backend", *argv, oparg)) {
             replace_string(&vtpm.backend_domname, oparg);
         } else {
             fprintf(stderr, "unrecognized argument `%s'\n", *argv);
+            libxl_device_vtpm_dispose(&vtpm);
             return 1;
         }
     }
@@ -65,6 +67,7 @@  int main_vtpmattach(int argc, char **arg
 
     if (libxl_device_vtpm_add(ctx, domid, &vtpm, 0)) {
         fprintf(stderr, "libxl_device_vtpm_add failed.\n");
+        libxl_device_vtpm_dispose(&vtpm);
         return 1;
     }
     libxl_device_vtpm_dispose(&vtpm);