[PATCH] kconfig: qconf: fix buffer overflow in debug links

Masahiro Yamada posted 1 patch 1 month, 4 weeks ago
scripts/kconfig/qconf.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] kconfig: qconf: fix buffer overflow in debug links
Posted by Masahiro Yamada 1 month, 4 weeks ago
If you enable the "Option -> Show Debug Info" and click a click, the
program terminates with the following error:

    *** buffer overflow detected ***: terminated

The buffer overflow is caused by the following line:

    strcat(data, "$");

The buffer needs one more byte to accommodate the additional character.

Fixes: c4f7398bee9c ("kconfig: qconf: make debug links work again")
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---

 scripts/kconfig/qconf.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc
index 7dba8014ead4..e260cab1c2af 100644
--- a/scripts/kconfig/qconf.cc
+++ b/scripts/kconfig/qconf.cc
@@ -1166,7 +1166,7 @@ void ConfigInfoView::clicked(const QUrl &url)
 {
 	QByteArray str = url.toEncoded();
 	const std::size_t count = str.size();
-	char *data = new char[count + 1];
+	char *data = new char[count + 2];  // '$' + '\0'
 	struct symbol **result;
 	struct menu *m = NULL;
 
-- 
2.43.0
Re: [PATCH] kconfig: qconf: fix buffer overflow in debug links
Posted by Masahiro Yamada 1 month, 4 weeks ago
On Tue, Oct 1, 2024 at 6:02 PM Masahiro Yamada <masahiroy@kernel.org> wrote:
>
> If you enable the "Option -> Show Debug Info" and click a click, the


I meant "click a link"




> program terminates with the following error:
>
>     *** buffer overflow detected ***: terminated
>
> The buffer overflow is caused by the following line:
>
>     strcat(data, "$");
>
> The buffer needs one more byte to accommodate the additional character.
>
> Fixes: c4f7398bee9c ("kconfig: qconf: make debug links work again")
> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
> ---
>
>  scripts/kconfig/qconf.cc | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/scripts/kconfig/qconf.cc b/scripts/kconfig/qconf.cc
> index 7dba8014ead4..e260cab1c2af 100644
> --- a/scripts/kconfig/qconf.cc
> +++ b/scripts/kconfig/qconf.cc
> @@ -1166,7 +1166,7 @@ void ConfigInfoView::clicked(const QUrl &url)
>  {
>         QByteArray str = url.toEncoded();
>         const std::size_t count = str.size();
> -       char *data = new char[count + 1];
> +       char *data = new char[count + 2];  // '$' + '\0'
>         struct symbol **result;
>         struct menu *m = NULL;
>
> --
> 2.43.0
>


-- 
Best Regards
Masahiro Yamada