Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit be1ecaca authored by qctecmdr Service's avatar qctecmdr Service Committed by Gerrit - the friendly Code Review server
Browse files

Merge "CHROMIUM: usb: gadget: configfs: Fix KASAN use-after-free"

parents d20a8af5 fcf0e822
Loading
Loading
Loading
Loading
+12 −5
Original line number Original line Diff line number Diff line
@@ -139,21 +139,28 @@ struct gadget_config_name {
	struct list_head list;
	struct list_head list;
};
};


#define MAX_USB_STRING_LEN	126
#define MAX_USB_STRING_WITH_NULL_LEN	(MAX_USB_STRING_LEN+1)

static int usb_string_copy(const char *s, char **s_copy)
static int usb_string_copy(const char *s, char **s_copy)
{
{
	int ret;
	int ret;
	char *str;
	char *str;
	char *copy = *s_copy;
	char *copy = *s_copy;
	ret = strlen(s);
	ret = strlen(s);
	if (ret > 126)
	if (ret > MAX_USB_STRING_LEN)
		return -EOVERFLOW;
		return -EOVERFLOW;


	str = kstrdup(s, GFP_KERNEL);
	if (copy) {
		str = copy;
	} else {
		str = kmalloc(MAX_USB_STRING_WITH_NULL_LEN, GFP_KERNEL);
		if (!str)
		if (!str)
			return -ENOMEM;
			return -ENOMEM;
	}
	strncpy(str, s, MAX_USB_STRING_WITH_NULL_LEN);
	if (str[ret - 1] == '\n')
	if (str[ret - 1] == '\n')
		str[ret - 1] = '\0';
		str[ret - 1] = '\0';
	kfree(copy);
	*s_copy = str;
	*s_copy = str;
	return 0;
	return 0;
}
}