2021-08-04 10:01:08

by Mariusz Skamra

[permalink] [raw]
Subject: [PATCH] monitor: Fix truncated server socket path parameter

This fixes the issue of --server <socket> parameter
last character was dropped. There is no need to use
strncpy, as the length is already checked, and it is
known that the destination buffer is big enough

Change-Id: I646f86709d59d33b8f1d27b725eb42a9f44f6f2d
---
monitor/control.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/monitor/control.c b/monitor/control.c
index d1ba97d37..266602a34 100644
--- a/monitor/control.c
+++ b/monitor/control.c
@@ -1165,14 +1165,12 @@ static int server_fd = -1;
void control_server(const char *path)
{
struct sockaddr_un addr;
- size_t len;
int fd;

if (server_fd >= 0)
return;

- len = strlen(path);
- if (len > sizeof(addr.sun_path) - 1) {
+ if (strlen(path) > sizeof(addr.sun_path) - 1) {
fprintf(stderr, "Socket name too long\n");
return;
}
@@ -1187,7 +1185,7 @@ void control_server(const char *path)

memset(&addr, 0, sizeof(addr));
addr.sun_family = AF_UNIX;
- strncpy(addr.sun_path, path, len - 1);
+ strcpy(addr.sun_path, path);

if (bind(fd, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
perror("Failed to bind server socket");
--
2.31.1



2021-08-04 11:16:25

by Mariusz Skamra

[permalink] [raw]
Subject: [PATCH v2] monitor: Fix truncated server socket path parameter

This fixes the issue of --server <socket> parameter
last character was dropped. There is no need to use
strncpy, as the length is already checked, and it is
known that the destination buffer is big enough
---
monitor/control.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/monitor/control.c b/monitor/control.c
index d1ba97d37..266602a34 100644
--- a/monitor/control.c
+++ b/monitor/control.c
@@ -1165,14 +1165,12 @@ static int server_fd = -1;
void control_server(const char *path)
{
struct sockaddr_un addr;
- size_t len;
int fd;

if (server_fd >= 0)
return;

- len = strlen(path);
- if (len > sizeof(addr.sun_path) - 1) {
+ if (strlen(path) > sizeof(addr.sun_path) - 1) {
fprintf(stderr, "Socket name too long\n");
return;
}
@@ -1187,7 +1185,7 @@ void control_server(const char *path)

memset(&addr, 0, sizeof(addr));
addr.sun_family = AF_UNIX;
- strncpy(addr.sun_path, path, len - 1);
+ strcpy(addr.sun_path, path);

if (bind(fd, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
perror("Failed to bind server socket");
--
2.31.1


2021-08-04 11:34:53

by bluez.test.bot

[permalink] [raw]
Subject: RE: [v2] monitor: Fix truncated server socket path parameter

This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=526191

---Test result---

Test Summary:
CheckPatch PASS 0.27 seconds
GitLint PASS 0.11 seconds
Prep - Setup ELL PASS 40.73 seconds
Build - Prep PASS 0.10 seconds
Build - Configure PASS 7.15 seconds
Build - Make PASS 178.63 seconds
Make Check PASS 9.18 seconds
Make Distcheck PASS 210.60 seconds
Build w/ext ELL - Configure PASS 7.26 seconds
Build w/ext ELL - Make PASS 168.20 seconds

Details
##############################
Test: CheckPatch - PASS
Desc: Run checkpatch.pl script with rule in .checkpatch.conf

##############################
Test: GitLint - PASS
Desc: Run gitlint with rule in .gitlint

##############################
Test: Prep - Setup ELL - PASS
Desc: Clone, build, and install ELL

##############################
Test: Build - Prep - PASS
Desc: Prepare environment for build

##############################
Test: Build - Configure - PASS
Desc: Configure the BlueZ source tree

##############################
Test: Build - Make - PASS
Desc: Build the BlueZ source tree

##############################
Test: Make Check - PASS
Desc: Run 'make check'

##############################
Test: Make Distcheck - PASS
Desc: Run distcheck to check the distribution

##############################
Test: Build w/ext ELL - Configure - PASS
Desc: Configure BlueZ source with '--enable-external-ell' configuration

##############################
Test: Build w/ext ELL - Make - PASS
Desc: Build BlueZ source with '--enable-external-ell' configuration



---
Regards,
Linux Bluetooth

2021-08-04 15:09:12

by Szymon Janc

[permalink] [raw]
Subject: Re: [PATCH v2] monitor: Fix truncated server socket path parameter

Hello Mariusz,

On Wednesday, 4 August 2021 12:54:46 CEST Mariusz Skamra wrote:
> This fixes the issue of --server <socket> parameter
> last character was dropped. There is no need to use
> strncpy, as the length is already checked, and it is
> known that the destination buffer is big enough
> ---
> monitor/control.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/monitor/control.c b/monitor/control.c
> index d1ba97d37..266602a34 100644
> --- a/monitor/control.c
> +++ b/monitor/control.c
> @@ -1165,14 +1165,12 @@ static int server_fd = -1;
> void control_server(const char *path)
> {
> struct sockaddr_un addr;
> - size_t len;
> int fd;
>
> if (server_fd >= 0)
> return;
>
> - len = strlen(path);
> - if (len > sizeof(addr.sun_path) - 1) {
> + if (strlen(path) > sizeof(addr.sun_path) - 1) {
> fprintf(stderr, "Socket name too long\n");
> return;
> }
> @@ -1187,7 +1185,7 @@ void control_server(const char *path)
>
> memset(&addr, 0, sizeof(addr));
> addr.sun_family = AF_UNIX;
> - strncpy(addr.sun_path, path, len - 1);
> + strcpy(addr.sun_path, path);
>
> if (bind(fd, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
> perror("Failed to bind server socket");

Patch applied, thanks.

--
pozdrawiam
Szymon Janc