| From 639650dd64e483074dd7c3c7ea6dc1b1bd542743 Mon Sep 17 00:00:00 2001 |
| From: alperak <alperyasinak1@gmail.com> |
| Date: Sun, 12 Nov 2023 20:16:55 +0300 |
| Subject: [PATCH] fixed compilation error caused by strncpy |
| |
| Issue: |
| https://github.com/tinyalsa/tinyalsa/issues/219 |
| |
| Fix: |
| https://github.com/tinyalsa/tinyalsa/pull/220 |
| https://github.com/tinyalsa/tinyalsa/pull/221 |
| |
| Upstream-Status: Submitted |
| |
| Signed-off-by: alperak <alperyasinak1@gmail.com> |
| --- |
| src/mixer_plugin.c | 8 +++++--- |
| src/pcm_plugin.c | 9 ++++++--- |
| 2 files changed, 11 insertions(+), 6 deletions(-) |
| |
| diff --git a/src/mixer_plugin.c b/src/mixer_plugin.c |
| index 34117a9..f608563 100644 |
| --- a/src/mixer_plugin.c |
| +++ b/src/mixer_plugin.c |
| @@ -82,7 +82,8 @@ static int mixer_plug_get_elem_id(struct mixer_plug_data *plug_data, |
| id->iface = ctl->iface; |
| |
| strncpy((char *)id->name, (char *)ctl->name, |
| - sizeof(id->name)); |
| + sizeof(id->name) - 1); |
| + ((char *)id->name)[sizeof(id->name) - 1] = '\0'; |
| |
| return 0; |
| } |
| @@ -100,8 +101,9 @@ static int mixer_plug_info_enum(struct snd_control *ctl, |
| |
| strncpy(einfo->value.enumerated.name, |
| val->texts[einfo->value.enumerated.item], |
| - sizeof(einfo->value.enumerated.name)); |
| - |
| + sizeof(einfo->value.enumerated.name) - 1); |
| + einfo->value.enumerated.name[sizeof(einfo->value.enumerated.name) - 1] = '\0'; |
| + |
| return 0; |
| } |
| |
| diff --git a/src/pcm_plugin.c b/src/pcm_plugin.c |
| index 15bfc80..47bf4a5 100644 |
| --- a/src/pcm_plugin.c |
| +++ b/src/pcm_plugin.c |
| @@ -153,9 +153,12 @@ static int pcm_plug_info(struct pcm_plug_data *plug_data, |
| return ret; |
| } |
| |
| - strncpy((char *)info->id, name, sizeof(info->id)); |
| - strncpy((char *)info->name, name, sizeof(info->name)); |
| - strncpy((char *)info->subname, name, sizeof(info->subname)); |
| + strncpy((char *)info->id, name, sizeof(info->id) - 1); |
| + ((char *)info->id)[sizeof(info->id) - 1] = '\0'; |
| + strncpy((char *)info->name, name, sizeof(info->name) - 1); |
| + ((char *)info->name)[sizeof(info->name) - 1] = '\0'; |
| + strncpy((char *)info->subname, name, sizeof(info->subname) - 1); |
| + ((char *)info->subname)[sizeof(info->subname) - 1] = '\0'; |
| |
| info->subdevices_count = 1; |
| |
| -- |
| 2.25.1 |
| |