[PATCH] Bluetooth: hidp: using strlcpy or strcpy instead of strncpy

Subsystems: bluetooth subsystem, the rest

STALE4889d

15 messages, 4 authors, 2013-05-21 · open the first message on its own page

[PATCH] Bluetooth: hidp: using strlcpy or strcpy instead of strncpy

From: Chen Gang <hidden>
Date: 2013-05-07 13:50:32

For NUL terminated string, need always let it ended by zero.

Since have already called memcpy() to initialize 'ci', so need not
redundent initializations.

Signed-off-by: Chen Gang <redacted>
---
 net/bluetooth/hidp/core.c |   10 +++-------
 1 files changed, 3 insertions(+), 7 deletions(-)
diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c
index 940f5ac..9a8ae63 100644
--- a/net/bluetooth/hidp/core.c
+++ b/net/bluetooth/hidp/core.c
@@ -76,25 +76,21 @@ static void hidp_copy_session(struct hidp_session *session, struct hidp_conninfo
 	ci->flags = session->flags;
 	ci->state = BT_CONNECTED;
 
-	ci->vendor  = 0x0000;
-	ci->product = 0x0000;
-	ci->version = 0x0000;
-
 	if (session->input) {
 		ci->vendor  = session->input->id.vendor;
 		ci->product = session->input->id.product;
 		ci->version = session->input->id.version;
 		if (session->input->name)
-			strncpy(ci->name, session->input->name, 128);
+			strlcpy(ci->name, session->input->name, 128);
 		else
-			strncpy(ci->name, "HID Boot Device", 128);
+			strcpy(ci->name, "HID Boot Device");
 	}
 
 	if (session->hid) {
 		ci->vendor  = session->hid->vendor;
 		ci->product = session->hid->product;
 		ci->version = session->hid->version;
-		strncpy(ci->name, session->hid->name, 128);
+		strlcpy(ci->name, session->hid->name, 128);
 	}
 }
 
-- 
1.7.7.6

[Suggestion] Bluetooth: hidp: redundant initialization or issue for function hidp_copy_session

From: Chen Gang <hidden>
Date: 2013-05-07 14:08:09

Hello Maintainers:

In net/bluetooth/hidp/core.c, for hidp_copy_session(), the
'session->input' and 'session->hid' are conflict with each other.

And excuse me, I do not quit know the details, but I think we have 2
choices for fixing it:

  one is ''if (session->input) { } else if (session->hid) { };''
  the other is ''if (seesion->hid) { } else if (session->input) { };''

The first choice assumes the original code has a logical issue; the
second choice assumes the original code has redundant initialization.

Please help check.

Thanks.

  71 static void hidp_copy_session(struct hidp_session *session, struct hidp_conninfo *ci)
  72 {
  73         memset(ci, 0, sizeof(*ci));
  74         bacpy(&ci->bdaddr, &session->bdaddr);
  75 
  76         ci->flags = session->flags;
  77         ci->state = BT_CONNECTED;
  78 
  79         ci->vendor  = 0x0000;
  80         ci->product = 0x0000;
  81         ci->version = 0x0000;
  82 
  83         if (session->input) {
  84                 ci->vendor  = session->input->id.vendor;
  85                 ci->product = session->input->id.product;
  86                 ci->version = session->input->id.version;
  87                 if (session->input->name)
  88                         strncpy(ci->name, session->input->name, 128);
  89                 else
  90                         strncpy(ci->name, "HID Boot Device", 128);
  91         }
  92 
  93         if (session->hid) {
  94                 ci->vendor  = session->hid->vendor;
  95                 ci->product = session->hid->product;
  96                 ci->version = session->hid->version;
  97                 strncpy(ci->name, session->hid->name, 128);
  98         }
  99 }

Re: [PATCH] Bluetooth: hidp: using strlcpy or strcpy instead of strncpy

From: David Herrmann <hidden>
Date: 2013-05-07 19:31:50

Hi

On Tue, May 7, 2013 at 3:50 PM, Chen Gang [off-list ref] wrote:
quoted hunk
For NUL terminated string, need always let it ended by zero.

Since have already called memcpy() to initialize 'ci', so need not
redundent initializations.

Signed-off-by: Chen Gang <redacted>
---
 net/bluetooth/hidp/core.c |   10 +++-------
 1 files changed, 3 insertions(+), 7 deletions(-)
diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c
index 940f5ac..9a8ae63 100644
--- a/net/bluetooth/hidp/core.c
+++ b/net/bluetooth/hidp/core.c
@@ -76,25 +76,21 @@ static void hidp_copy_session(struct hidp_session *session, struct hidp_conninfo
        ci->flags = session->flags;
        ci->state = BT_CONNECTED;

-       ci->vendor  = 0x0000;
-       ci->product = 0x0000;
-       ci->version = 0x0000;
-
        if (session->input) {
                ci->vendor  = session->input->id.vendor;
                ci->product = session->input->id.product;
                ci->version = session->input->id.version;
                if (session->input->name)
-                       strncpy(ci->name, session->input->name, 128);
+                       strlcpy(ci->name, session->input->name, 128);
                else
-                       strncpy(ci->name, "HID Boot Device", 128);
+                       strcpy(ci->name, "HID Boot Device");
I'd actually prefer strlcpy() here, too (better be safe). Other than
that the patch looks fine.

Reviewed-by: David Herrmann <redacted>

Regards
David
        }

        if (session->hid) {
                ci->vendor  = session->hid->vendor;
                ci->product = session->hid->product;
                ci->version = session->hid->version;
-               strncpy(ci->name, session->hid->name, 128);
+               strlcpy(ci->name, session->hid->name, 128);
        }
 }

--
1.7.7.6

Re: [Suggestion] Bluetooth: hidp: redundant initialization or issue for function hidp_copy_session

From: David Herrmann <hidden>
Date: 2013-05-07 19:37:11

Hi

On Tue, May 7, 2013 at 4:08 PM, Chen Gang [off-list ref] wrote:
Hello Maintainers:

In net/bluetooth/hidp/core.c, for hidp_copy_session(), the
'session->input' and 'session->hid' are conflict with each other.

And excuse me, I do not quit know the details, but I think we have 2
choices for fixing it:

  one is ''if (session->input) { } else if (session->hid) { };''
  the other is ''if (seesion->hid) { } else if (session->input) { };''

The first choice assumes the original code has a logical issue; the
second choice assumes the original code has redundant initialization.
The code is fine. Only one of "->input" or "->hid" can be valid at a
time. And exactly one of them is guaranteed to be valid. See
hidp_session_dev_init().

I fixed all code that I changed during the rework to say:

if (session->hid)
...
else if (session->input)
...

It makes the code more clear. But I avoided touching all the other
places that I didn't change, as the code is technically right. Anyway,
I don't care whether we want to fix all other occurrences to use "else
if". Feel free to send a patch.

Thanks
David
Please help check.

Thanks.

  71 static void hidp_copy_session(struct hidp_session *session, struct hidp_conninfo *ci)
  72 {
  73         memset(ci, 0, sizeof(*ci));
  74         bacpy(&ci->bdaddr, &session->bdaddr);
  75
  76         ci->flags = session->flags;
  77         ci->state = BT_CONNECTED;
  78
  79         ci->vendor  = 0x0000;
  80         ci->product = 0x0000;
  81         ci->version = 0x0000;
  82
  83         if (session->input) {
  84                 ci->vendor  = session->input->id.vendor;
  85                 ci->product = session->input->id.product;
  86                 ci->version = session->input->id.version;
  87                 if (session->input->name)
  88                         strncpy(ci->name, session->input->name, 128);
  89                 else
  90                         strncpy(ci->name, "HID Boot Device", 128);
  91         }
  92
  93         if (session->hid) {
  94                 ci->vendor  = session->hid->vendor;
  95                 ci->product = session->hid->product;
  96                 ci->version = session->hid->version;
  97                 strncpy(ci->name, session->hid->name, 128);
  98         }
  99 }

Re: [PATCH] Bluetooth: hidp: using strlcpy or strcpy instead of strncpy

From: Chen Gang <hidden>
Date: 2013-05-08 01:02:15

On 2013年05月08日 03:31, David Herrmann wrote:
On Tue, May 7, 2013 at 3:50 PM, Chen Gang [off-list ref] wrote:
quoted
quoted
For NUL terminated string, need always let it ended by zero.

Since have already called memcpy() to initialize 'ci', so need not
redundent initializations.

Signed-off-by: Chen Gang <redacted>
---
 net/bluetooth/hidp/core.c |   10 +++-------
 1 files changed, 3 insertions(+), 7 deletions(-)
diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c
index 940f5ac..9a8ae63 100644
--- a/net/bluetooth/hidp/core.c
+++ b/net/bluetooth/hidp/core.c
@@ -76,25 +76,21 @@ static void hidp_copy_session(struct hidp_session *session, struct hidp_conninfo
        ci->flags = session->flags;
        ci->state = BT_CONNECTED;

-       ci->vendor  = 0x0000;
-       ci->product = 0x0000;
-       ci->version = 0x0000;
-
        if (session->input) {
                ci->vendor  = session->input->id.vendor;
                ci->product = session->input->id.product;
                ci->version = session->input->id.version;
                if (session->input->name)
-                       strncpy(ci->name, session->input->name, 128);
+                       strlcpy(ci->name, session->input->name, 128);
                else
-                       strncpy(ci->name, "HID Boot Device", 128);
+                       strcpy(ci->name, "HID Boot Device");
I'd actually prefer strlcpy() here, too (better be safe). Other than
that the patch looks fine.
OK, thanks. I will send patch v2.

-- 
Chen Gang

Asianux Corporation

Re: [Suggestion] Bluetooth: hidp: redundant initialization or issue for function hidp_copy_session

From: Chen Gang <hidden>
Date: 2013-05-08 01:50:25

On 2013年05月08日 03:37, David Herrmann wrote:
Hi

On Tue, May 7, 2013 at 4:08 PM, Chen Gang [off-list ref] wrote:
quoted
Hello Maintainers:

In net/bluetooth/hidp/core.c, for hidp_copy_session(), the
'session->input' and 'session->hid' are conflict with each other.

And excuse me, I do not quit know the details, but I think we have 2
choices for fixing it:

  one is ''if (session->input) { } else if (session->hid) { };''
  the other is ''if (seesion->hid) { } else if (session->input) { };''

The first choice assumes the original code has a logical issue; the
second choice assumes the original code has redundant initialization.
The code is fine. Only one of "->input" or "->hid" can be valid at a
time. And exactly one of them is guaranteed to be valid. See
hidp_session_dev_init().
Oh, really it is, thanks.
I fixed all code that I changed during the rework to say:

if (session->hid)
..
else if (session->input)
..

It makes the code more clear. But I avoided touching all the other
places that I didn't change, as the code is technically right. Anyway,
I don't care whether we want to fix all other occurrences to use "else
if". Feel free to send a patch.
Me too: "avoided touching all the other places that I didn't change, as
the code is technically right".

Thanks.

-- 
Chen Gang

Asianux Corporation

[PATCH v2] Bluetooth: hidp: using strlcpy instead of strncpy, also beautify code.

From: Chen Gang <hidden>
Date: 2013-05-08 03:34:30

For NUL terminated string, need always let it ended by zero.

Since have already called memcpy() to initialize 'ci', so need not
redundent initializations.

Better use ''if(session->hid) {} else if(session->input) {}'' instead
of ''if(session->hid) {}; if(session->input) {};''

Signed-off-by: Chen Gang <redacted>
---
 net/bluetooth/hidp/core.c |   14 ++++----------
 1 files changed, 4 insertions(+), 10 deletions(-)
diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c
index 940f5ac..f13a8da 100644
--- a/net/bluetooth/hidp/core.c
+++ b/net/bluetooth/hidp/core.c
@@ -76,25 +76,19 @@ static void hidp_copy_session(struct hidp_session *session, struct hidp_conninfo
 	ci->flags = session->flags;
 	ci->state = BT_CONNECTED;
 
-	ci->vendor  = 0x0000;
-	ci->product = 0x0000;
-	ci->version = 0x0000;
-
 	if (session->input) {
 		ci->vendor  = session->input->id.vendor;
 		ci->product = session->input->id.product;
 		ci->version = session->input->id.version;
 		if (session->input->name)
-			strncpy(ci->name, session->input->name, 128);
+			strlcpy(ci->name, session->input->name, 128);
 		else
-			strncpy(ci->name, "HID Boot Device", 128);
-	}
-
-	if (session->hid) {
+			strlcpy(ci->name, "HID Boot Device", 128);
+	} else if (session->hid) {
 		ci->vendor  = session->hid->vendor;
 		ci->product = session->hid->product;
 		ci->version = session->hid->version;
-		strncpy(ci->name, session->hid->name, 128);
+		strlcpy(ci->name, session->hid->name, 128);
 	}
 }
 
-- 
1.7.7.6

Re: [PATCH v2] Bluetooth: hidp: using strlcpy instead of strncpy, also beautify code.

From: David Herrmann <hidden>
Date: 2013-05-08 15:16:25

Hi Chen

On Wed, May 8, 2013 at 5:34 AM, Chen Gang [off-list ref] wrote:
For NUL terminated string, need always let it ended by zero.

Since have already called memcpy() to initialize 'ci', so need not
redundent initializations.

Better use ''if(session->hid) {} else if(session->input) {}'' instead
of ''if(session->hid) {}; if(session->input) {};''
Yep, looks good now.

Reviewed-by: David Herrmann <redacted>

Thanks
David
quoted hunk
Signed-off-by: Chen Gang <redacted>
---
 net/bluetooth/hidp/core.c |   14 ++++----------
 1 files changed, 4 insertions(+), 10 deletions(-)
diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c
index 940f5ac..f13a8da 100644
--- a/net/bluetooth/hidp/core.c
+++ b/net/bluetooth/hidp/core.c
@@ -76,25 +76,19 @@ static void hidp_copy_session(struct hidp_session *session, struct hidp_conninfo
        ci->flags = session->flags;
        ci->state = BT_CONNECTED;

-       ci->vendor  = 0x0000;
-       ci->product = 0x0000;
-       ci->version = 0x0000;
-
        if (session->input) {
                ci->vendor  = session->input->id.vendor;
                ci->product = session->input->id.product;
                ci->version = session->input->id.version;
                if (session->input->name)
-                       strncpy(ci->name, session->input->name, 128);
+                       strlcpy(ci->name, session->input->name, 128);
                else
-                       strncpy(ci->name, "HID Boot Device", 128);
-       }
-
-       if (session->hid) {
+                       strlcpy(ci->name, "HID Boot Device", 128);
+       } else if (session->hid) {
                ci->vendor  = session->hid->vendor;
                ci->product = session->hid->product;
                ci->version = session->hid->version;
-               strncpy(ci->name, session->hid->name, 128);
+               strlcpy(ci->name, session->hid->name, 128);
        }
 }

--
1.7.7.6

Re: [PATCH v2] Bluetooth: hidp: using strlcpy instead of strncpy, also beautify code.

From: Chen Gang <hidden>
Date: 2013-05-09 01:07:10

On 05/08/2013 11:16 PM, David Herrmann wrote:
On Wed, May 8, 2013 at 5:34 AM, Chen Gang [off-list ref] wrote:
quoted
quoted
For NUL terminated string, need always let it ended by zero.

Since have already called memcpy() to initialize 'ci', so need not
redundent initializations.

Better use ''if(session->hid) {} else if(session->input) {}'' instead
of ''if(session->hid) {}; if(session->input) {};''
Yep, looks good now.

Reviewed-by: David Herrmann <redacted>
Thanks.

-- 
Chen Gang

Asianux Corporation

Re: [PATCH v2] Bluetooth: hidp: using strlcpy instead of strncpy, also beautify code.

From: Jiri Kosina <hidden>
Date: 2013-05-09 08:42:15

On Wed, 8 May 2013, Chen Gang wrote:
For NUL terminated string, need always let it ended by zero.

Since have already called memcpy() to initialize 'ci', so need not
redundent initializations.

Better use ''if(session->hid) {} else if(session->input) {}'' instead
of ''if(session->hid) {}; if(session->input) {};''

Signed-off-by: Chen Gang <redacted>
Makes sense.

Acked-by: Jiri Kosina <redacted>

Gustavo, going to take this, please?

-- 
Jiri Kosina
SUSE Labs

Re: [PATCH v2] Bluetooth: hidp: using strlcpy instead of strncpy, also beautify code.

From: Chen Gang <hidden>
Date: 2013-05-09 08:48:38

On 05/09/2013 04:42 PM, Jiri Kosina wrote:
On Wed, 8 May 2013, Chen Gang wrote:
quoted
quoted
For NUL terminated string, need always let it ended by zero.

Since have already called memcpy() to initialize 'ci', so need not
redundent initializations.

Better use ''if(session->hid) {} else if(session->input) {}'' instead
of ''if(session->hid) {}; if(session->input) {};''

Signed-off-by: Chen Gang <redacted>
Makes sense.

Acked-by: Jiri Kosina <redacted>

Gustavo, going to take this, please?

-- Jiri Kosina SUSE Labs
Thanks, and also help to fix the spelling: redundent -> redundant.
(if need let me send patch v3, please reply to tell me, thanks)


-- 
Chen Gang

Asianux Corporation

[PATCH v3] Bluetooth: hidp: using strlcpy instead of strncpy, also beautify code.

From: Chen Gang <hidden>
Date: 2013-05-13 02:07:11

For NUL terminated string, need always let it ended by zero.

Since have already called memcpy() to initialize 'ci', so need not
redundant initialization.

Better use ''if(session->hid) {} else if(session->input) {}"" instead
of ''if(session->hid) {}; if(session->input) {};''

Signed-off-by: Chen Gang <redacted>
---
 net/bluetooth/hidp/core.c |   14 ++++----------
 1 files changed, 4 insertions(+), 10 deletions(-)
diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c
index 940f5ac..f13a8da 100644
--- a/net/bluetooth/hidp/core.c
+++ b/net/bluetooth/hidp/core.c
@@ -76,25 +76,19 @@ static void hidp_copy_session(struct hidp_session *session, struct hidp_conninfo
 	ci->flags = session->flags;
 	ci->state = BT_CONNECTED;
 
-	ci->vendor  = 0x0000;
-	ci->product = 0x0000;
-	ci->version = 0x0000;
-
 	if (session->input) {
 		ci->vendor  = session->input->id.vendor;
 		ci->product = session->input->id.product;
 		ci->version = session->input->id.version;
 		if (session->input->name)
-			strncpy(ci->name, session->input->name, 128);
+			strlcpy(ci->name, session->input->name, 128);
 		else
-			strncpy(ci->name, "HID Boot Device", 128);
-	}
-
-	if (session->hid) {
+			strlcpy(ci->name, "HID Boot Device", 128);
+	} else if (session->hid) {
 		ci->vendor  = session->hid->vendor;
 		ci->product = session->hid->product;
 		ci->version = session->hid->version;
-		strncpy(ci->name, session->hid->name, 128);
+		strlcpy(ci->name, session->hid->name, 128);
 	}
 }
 
-- 
1.7.7.6

Re: [PATCH v3] Bluetooth: hidp: using strlcpy instead of strncpy, also beautify code.

From: Chen Gang <hidden>
Date: 2013-05-17 07:04:35

Hello Maintainers:

Please help check this patch when you have time, thanks.

It is "Reviewed-by: David Herrmann [off-list ref]"

And also is "Acked-by: Jiri Kosina [off-list ref]"

If need me do any additional things, please tell me.


Thanks.

On 05/13/2013 10:07 AM, Chen Gang wrote:
quoted hunk
For NUL terminated string, need always let it ended by zero.

Since have already called memcpy() to initialize 'ci', so need not
redundant initialization.

Better use ''if(session->hid) {} else if(session->input) {}"" instead
of ''if(session->hid) {}; if(session->input) {};''

Signed-off-by: Chen Gang <redacted>
---
 net/bluetooth/hidp/core.c |   14 ++++----------
 1 files changed, 4 insertions(+), 10 deletions(-)
diff --git a/net/bluetooth/hidp/core.c b/net/bluetooth/hidp/core.c
index 940f5ac..f13a8da 100644
--- a/net/bluetooth/hidp/core.c
+++ b/net/bluetooth/hidp/core.c
@@ -76,25 +76,19 @@ static void hidp_copy_session(struct hidp_session *session, struct hidp_conninfo
 	ci->flags = session->flags;
 	ci->state = BT_CONNECTED;
 
-	ci->vendor  = 0x0000;
-	ci->product = 0x0000;
-	ci->version = 0x0000;
-
 	if (session->input) {
 		ci->vendor  = session->input->id.vendor;
 		ci->product = session->input->id.product;
 		ci->version = session->input->id.version;
 		if (session->input->name)
-			strncpy(ci->name, session->input->name, 128);
+			strlcpy(ci->name, session->input->name, 128);
 		else
-			strncpy(ci->name, "HID Boot Device", 128);
-	}
-
-	if (session->hid) {
+			strlcpy(ci->name, "HID Boot Device", 128);
+	} else if (session->hid) {
 		ci->vendor  = session->hid->vendor;
 		ci->product = session->hid->product;
 		ci->version = session->hid->version;
-		strncpy(ci->name, session->hid->name, 128);
+		strlcpy(ci->name, session->hid->name, 128);
 	}
 }
 

-- 
Chen Gang

Asianux Corporation

Re: [PATCH v3] Bluetooth: hidp: using strlcpy instead of strncpy, also beautify code.

From: Gustavo Padovan <hidden>
Date: 2013-05-20 21:52:24

Hi Chen,

* Chen Gang [off-list ref] [2013-05-13 10:07:11 +0800]:
For NUL terminated string, need always let it ended by zero.

Since have already called memcpy() to initialize 'ci', so need not
redundant initialization.

Better use ''if(session->hid) {} else if(session->input) {}"" instead
of ''if(session->hid) {}; if(session->input) {};''

Signed-off-by: Chen Gang <redacted>
---
 net/bluetooth/hidp/core.c |   14 ++++----------
 1 files changed, 4 insertions(+), 10 deletions(-)
Sorry for the big delay on this, patches has now been applied to
bluetooth-next. Thanks all.

	Gustavo

Re: [PATCH v3] Bluetooth: hidp: using strlcpy instead of strncpy, also beautify code.

From: Chen Gang <hidden>
Date: 2013-05-21 01:40:02

On 05/21/2013 05:52 AM, Gustavo Padovan wrote:
Hi Chen,

* Chen Gang [off-list ref] [2013-05-13 10:07:11 +0800]:
quoted
quoted
For NUL terminated string, need always let it ended by zero.

Since have already called memcpy() to initialize 'ci', so need not
redundant initialization.

Better use ''if(session->hid) {} else if(session->input) {}"" instead
of ''if(session->hid) {}; if(session->input) {};''

Signed-off-by: Chen Gang <redacted>
---
 net/bluetooth/hidp/core.c |   14 ++++----------
 1 files changed, 4 insertions(+), 10 deletions(-)
Sorry for the big delay on this, patches has now been applied to
bluetooth-next. Thanks all.
It doesn't matter, every member have their own work, especially, most of
us are busy.

Thank you for your work, too.


Thanks.
-- 
Chen Gang

Asianux Corporation
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help