> The @data and @fd is leak in the error path of apply_xbc(), so this
> patch fix it.

I suggest to improve this change description.

* Please use an imperative wording.

* Would you like to add the tag “Fixes”?


> +++ b/tools/bootconfig/main.c
> @@ -314,6 +314,7 @@  int apply_xbc(const char *path, const char *xbc_path)
>       ret = delete_xbc(path);
>       if (ret < 0) {
>               pr_err("Failed to delete previous boot config: %d\n", ret);
> +             free(data);
>               return ret;
>       }

I propose to adjust the exception handling.
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/coding-style.rst?id=6e7f2eacf09811d092c1b41263108ac7fe0d089d#n450

-               return ret;
+               goto free_data;


> @@ -321,24 +322,26 @@ int apply_xbc(const char *path, const char *xbc_path)
>       fd = open(path, O_RDWR | O_APPEND);
>       if (fd < 0) {
>               pr_err("Failed to open %s: %d\n", path, fd);
> +             free(data);
>               return fd;

-               return fd;
+               ret = fd;
+               goto free_data;


>       }
>       /* TODO: Ensure the @path is initramfs/initrd image */
>       ret = write(fd, data, size + 8);
>       if (ret < 0) {
>               pr_err("Failed to apply a boot config: %d\n", ret);
> -             return ret;
> +             goto out;

+               goto free_data;


>       }
>       /* Write a magic word of the bootconfig */
>       ret = write(fd, BOOTCONFIG_MAGIC, BOOTCONFIG_MAGIC_LEN);
>       if (ret < 0) {

-       if (ret < 0) {
+       if (ret < 0)


>               pr_err("Failed to apply a boot config magic: %d\n", ret);
> -             return ret;
> +             goto out;

I suggest to avoid an extra jump at such a place.


>       }

-       }
+


> +out:

+close_fd:
>       close(fd);

+free_data:
>       free(data);


How do you think about to complete the error handling also at other
source code places?

Regards,
Markus

Reply via email to