Commit 88426044 authored by Yunfeng Ye's avatar Yunfeng Ye Committed by Steven Rostedt (VMware)
Browse files

tools/bootconfig: Fix resource leak in apply_xbc()

Fix the @data and @fd allocations that are leaked in the error path of
apply_xbc().

Link: http://lkml.kernel.org/r/583a49c9-c27a-931d-e6c2-6f63a4b18bea@huawei.com



Acked-by: default avatarMasami Hiramatsu <mhiramat@kernel.org>
Signed-off-by: default avatarYunfeng Ye <yeyunfeng@huawei.com>
Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
parent 192b7993
Loading
Loading
Loading
Loading
+6 −3
Original line number Diff line number Diff line
@@ -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;
	}

@@ -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;
	}
	/* 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;
	}
	/* Write a magic word of the bootconfig */
	ret = write(fd, BOOTCONFIG_MAGIC, BOOTCONFIG_MAGIC_LEN);
	if (ret < 0) {
		pr_err("Failed to apply a boot config magic: %d\n", ret);
		return ret;
		goto out;
	}
out:
	close(fd);
	free(data);

	return 0;
	return ret;
}

int usage(void)