* [PATCH 2/2] wireless: at76c50x: use native hex_pack_byte() method
[not found] ` <fa146966b0ce1e7f04d59eb27cc0e968f51b22de.1316774801.git.andriy.shevchenko@linux.intel.com>
@ 2011-09-23 10:47 ` Andy Shevchenko
2011-09-27 11:51 ` [PATCHv2] " Andy Shevchenko
2011-09-27 12:01 ` [PATCHv2.1] " Andy Shevchenko
0 siblings, 2 replies; 7+ messages in thread
From: Andy Shevchenko @ 2011-09-23 10:47 UTC (permalink / raw)
To: linux-kernel; +Cc: Andy Shevchenko, John W. Linville, linux-wireless, netdev
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: "John W. Linville" <linville@tuxdriver.com>
Cc: linux-wireless@vger.kernel.org
Cc: netdev@vger.kernel.org
---
drivers/net/wireless/at76c50x-usb.c | 5 +----
1 files changed, 1 insertions(+), 4 deletions(-)
diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c
index 2986014..157507a6 100644
--- a/drivers/net/wireless/at76c50x-usb.c
+++ b/drivers/net/wireless/at76c50x-usb.c
@@ -500,7 +500,6 @@ exit:
#define HEX2STR_BUFFERS 4
#define HEX2STR_MAX_LEN 64
-#define BIN2HEX(x) ((x) < 10 ? '0' + (x) : (x) + 'A' - 10)
/* Convert binary data into hex string */
static char *hex2str(void *buf, int len)
@@ -520,10 +519,8 @@ static char *hex2str(void *buf, int len)
}
while (len--) {
- *obuf++ = BIN2HEX(*ibuf >> 4);
- *obuf++ = BIN2HEX(*ibuf & 0xf);
+ obuf = hex_pack_byte(obuf, *ibuf++);
*obuf++ = '-';
- ibuf++;
}
*(--obuf) = '\0';
--
1.7.6.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCHv2] wireless: at76c50x: use native hex_pack_byte() method
2011-09-23 10:47 ` [PATCH 2/2] wireless: at76c50x: use native hex_pack_byte() method Andy Shevchenko
@ 2011-09-27 11:51 ` Andy Shevchenko
2011-09-27 12:01 ` [PATCHv2.1] " Andy Shevchenko
1 sibling, 0 replies; 7+ messages in thread
From: Andy Shevchenko @ 2011-09-27 11:51 UTC (permalink / raw)
To: linux-kernel; +Cc: Andy Shevchenko, John W. Linville, linux-wireless, netdev
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: "John W. Linville" <linville@tuxdriver.com>
Cc: linux-wireless@vger.kernel.org
Cc: netdev@vger.kernel.org
---
drivers/net/wireless/at76c50x-usb.c | 16 ++++++----------
1 files changed, 6 insertions(+), 10 deletions(-)
diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c
index 2986014..96daaad 100644
--- a/drivers/net/wireless/at76c50x-usb.c
+++ b/drivers/net/wireless/at76c50x-usb.c
@@ -500,7 +500,6 @@ exit:
#define HEX2STR_BUFFERS 4
#define HEX2STR_MAX_LEN 64
-#define BIN2HEX(x) ((x) < 10 ? '0' + (x) : (x) + 'A' - 10)
/* Convert binary data into hex string */
static char *hex2str(void *buf, int len)
@@ -514,18 +513,15 @@ static char *hex2str(void *buf, int len)
if (len > HEX2STR_MAX_LEN)
len = HEX2STR_MAX_LEN;
- if (len <= 0) {
- ret[0] = '\0';
- return ret;
- }
-
while (len--) {
- *obuf++ = BIN2HEX(*ibuf >> 4);
- *obuf++ = BIN2HEX(*ibuf & 0xf);
+ obuf = pack_hex_byte(obuf, *ibuf++);
*obuf++ = '-';
- ibuf++;
}
- *(--obuf) = '\0';
+
+ if (*obuf == '-')
+ obuf--;
+
+ *obuf = '\0';
return ret;
}
--
1.7.6.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCHv2.1] wireless: at76c50x: use native hex_pack_byte() method
2011-09-23 10:47 ` [PATCH 2/2] wireless: at76c50x: use native hex_pack_byte() method Andy Shevchenko
2011-09-27 11:51 ` [PATCHv2] " Andy Shevchenko
@ 2011-09-27 12:01 ` Andy Shevchenko
2011-09-27 19:47 ` Pavel Roskin
1 sibling, 1 reply; 7+ messages in thread
From: Andy Shevchenko @ 2011-09-27 12:01 UTC (permalink / raw)
To: linux-kernel; +Cc: Andy Shevchenko, John W. Linville, linux-wireless, netdev
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: "John W. Linville" <linville@tuxdriver.com>
Cc: linux-wireless@vger.kernel.org
Cc: netdev@vger.kernel.org
---
drivers/net/wireless/at76c50x-usb.c | 18 +++++++-----------
1 files changed, 7 insertions(+), 11 deletions(-)
diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c
index 2986014..2dde5f6 100644
--- a/drivers/net/wireless/at76c50x-usb.c
+++ b/drivers/net/wireless/at76c50x-usb.c
@@ -500,10 +500,9 @@ exit:
#define HEX2STR_BUFFERS 4
#define HEX2STR_MAX_LEN 64
-#define BIN2HEX(x) ((x) < 10 ? '0' + (x) : (x) + 'A' - 10)
/* Convert binary data into hex string */
-static char *hex2str(void *buf, int len)
+static char *hex2str(void *buf, size_t len)
{
static atomic_t a = ATOMIC_INIT(0);
static char bufs[HEX2STR_BUFFERS][3 * HEX2STR_MAX_LEN + 1];
@@ -514,18 +513,15 @@ static char *hex2str(void *buf, int len)
if (len > HEX2STR_MAX_LEN)
len = HEX2STR_MAX_LEN;
- if (len <= 0) {
- ret[0] = '\0';
- return ret;
- }
-
while (len--) {
- *obuf++ = BIN2HEX(*ibuf >> 4);
- *obuf++ = BIN2HEX(*ibuf & 0xf);
+ obuf = pack_hex_byte(obuf, *ibuf++);
*obuf++ = '-';
- ibuf++;
}
- *(--obuf) = '\0';
+
+ if (*obuf == '-')
+ obuf--;
+
+ *obuf = '\0';
return ret;
}
--
1.7.6.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCHv2.1] wireless: at76c50x: use native hex_pack_byte() method
2011-09-27 12:01 ` [PATCHv2.1] " Andy Shevchenko
@ 2011-09-27 19:47 ` Pavel Roskin
2011-09-28 8:11 ` Andy Shevchenko
2011-09-28 9:30 ` [PATCHv3] " Andy Shevchenko
0 siblings, 2 replies; 7+ messages in thread
From: Pavel Roskin @ 2011-09-27 19:47 UTC (permalink / raw)
To: Andy Shevchenko; +Cc: John W. Linville, linux-wireless
On Tue, 27 Sep 2011 15:01:49 +0300
Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Cc: "John W. Linville" <linville@tuxdriver.com>
> Cc: linux-wireless@vger.kernel.org
> Cc: netdev@vger.kernel.org
> ---
> drivers/net/wireless/at76c50x-usb.c | 18 +++++++-----------
> 1 files changed, 7 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/net/wireless/at76c50x-usb.c
...
> b/drivers/net/wireless/at76c50x-usb.c index 2986014..2dde5f6 100644
> - *obuf++ = BIN2HEX(*ibuf >> 4);
> - *obuf++ = BIN2HEX(*ibuf & 0xf);
> + obuf = pack_hex_byte(obuf, *ibuf++);
> *obuf++ = '-';
> - ibuf++;
> }
> - *(--obuf) = '\0';
> +
> + if (*obuf == '-')
> + obuf--;
This will access uninitialized data and fail to strip the final "-" in
most cases. The check for len being 0 was there for a reason. Please
actually test your code.
NACK
By the way, I don't think it's necessary to copy linux-kernel and
netdev about a change affecting just a wireless driver.
--
Regards,
Pavel Roskin
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCHv2.1] wireless: at76c50x: use native hex_pack_byte() method
2011-09-27 19:47 ` Pavel Roskin
@ 2011-09-28 8:11 ` Andy Shevchenko
2011-09-28 9:30 ` [PATCHv3] " Andy Shevchenko
1 sibling, 0 replies; 7+ messages in thread
From: Andy Shevchenko @ 2011-09-28 8:11 UTC (permalink / raw)
To: Pavel Roskin; +Cc: John W. Linville, linux-wireless
On Tue, 2011-09-27 at 15:47 -0400, Pavel Roskin wrote:
> On Tue, 27 Sep 2011 15:01:49 +0300
> Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
>
> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> > Cc: "John W. Linville" <linville@tuxdriver.com>
> > Cc: linux-wireless@vger.kernel.org
> > Cc: netdev@vger.kernel.org
> > ---
> > drivers/net/wireless/at76c50x-usb.c | 18 +++++++-----------
> > 1 files changed, 7 insertions(+), 11 deletions(-)
> >
> > diff --git a/drivers/net/wireless/at76c50x-usb.c
>
> ...
>
> > b/drivers/net/wireless/at76c50x-usb.c index 2986014..2dde5f6 100644
> > - *obuf++ = BIN2HEX(*ibuf >> 4);
> > - *obuf++ = BIN2HEX(*ibuf & 0xf);
> > + obuf = pack_hex_byte(obuf, *ibuf++);
> > *obuf++ = '-';
> > - ibuf++;
> > }
> > - *(--obuf) = '\0';
> > +
> > + if (*obuf == '-')
> > + obuf--;
>
> This will access uninitialized data and fail to strip the final "-" in
> most cases. The check for len being 0 was there for a reason. Please
> actually test your code.
In case of len == 0 we have either '\0' or hex digit in the first byte
of the array. Otherwise it's a mess in the memory which should not be
happened.
>
> NACK
>
> By the way, I don't think it's necessary to copy linux-kernel and
> netdev about a change affecting just a wireless driver.
>
--
Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Intel Finland Oy
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCHv3] wireless: at76c50x: use native hex_pack_byte() method
2011-09-27 19:47 ` Pavel Roskin
2011-09-28 8:11 ` Andy Shevchenko
@ 2011-09-28 9:30 ` Andy Shevchenko
2011-09-28 20:40 ` Pavel Roskin
1 sibling, 1 reply; 7+ messages in thread
From: Andy Shevchenko @ 2011-09-28 9:30 UTC (permalink / raw)
To: linux-wireless, Pavel Roskin; +Cc: Andy Shevchenko, John W. Linville
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: "John W. Linville" <linville@tuxdriver.com>
---
drivers/net/wireless/at76c50x-usb.c | 18 ++++++++----------
1 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c
index 2986014..39322d4 100644
--- a/drivers/net/wireless/at76c50x-usb.c
+++ b/drivers/net/wireless/at76c50x-usb.c
@@ -500,10 +500,9 @@ exit:
#define HEX2STR_BUFFERS 4
#define HEX2STR_MAX_LEN 64
-#define BIN2HEX(x) ((x) < 10 ? '0' + (x) : (x) + 'A' - 10)
/* Convert binary data into hex string */
-static char *hex2str(void *buf, int len)
+static char *hex2str(void *buf, size_t len)
{
static atomic_t a = ATOMIC_INIT(0);
static char bufs[HEX2STR_BUFFERS][3 * HEX2STR_MAX_LEN + 1];
@@ -514,18 +513,17 @@ static char *hex2str(void *buf, int len)
if (len > HEX2STR_MAX_LEN)
len = HEX2STR_MAX_LEN;
- if (len <= 0) {
- ret[0] = '\0';
- return ret;
- }
+ if (len == 0)
+ goto exit;
while (len--) {
- *obuf++ = BIN2HEX(*ibuf >> 4);
- *obuf++ = BIN2HEX(*ibuf & 0xf);
+ obuf = pack_hex_byte(obuf, *ibuf++);
*obuf++ = '-';
- ibuf++;
}
- *(--obuf) = '\0';
+ obuf--;
+
+exit:
+ *obuf = '\0';
return ret;
}
--
1.7.6.3
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCHv3] wireless: at76c50x: use native hex_pack_byte() method
2011-09-28 9:30 ` [PATCHv3] " Andy Shevchenko
@ 2011-09-28 20:40 ` Pavel Roskin
0 siblings, 0 replies; 7+ messages in thread
From: Pavel Roskin @ 2011-09-28 20:40 UTC (permalink / raw)
To: Andy Shevchenko; +Cc: linux-wireless, John W. Linville
On Wed, 28 Sep 2011 12:30:59 +0300
Andy Shevchenko <andriy.shevchenko@linux.intel.com> wrote:
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Cc: "John W. Linville" <linville@tuxdriver.com>
Tested-by: Pavel Roskin <proski@gnu.org>
> ---
> drivers/net/wireless/at76c50x-usb.c | 18 ++++++++----------
> 1 files changed, 8 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/net/wireless/at76c50x-usb.c
> b/drivers/net/wireless/at76c50x-usb.c index 2986014..39322d4 100644
> --- a/drivers/net/wireless/at76c50x-usb.c
> +++ b/drivers/net/wireless/at76c50x-usb.c
> @@ -500,10 +500,9 @@ exit:
>
> #define HEX2STR_BUFFERS 4
> #define HEX2STR_MAX_LEN 64
> -#define BIN2HEX(x) ((x) < 10 ? '0' + (x) : (x) + 'A' - 10)
>
> /* Convert binary data into hex string */
> -static char *hex2str(void *buf, int len)
> +static char *hex2str(void *buf, size_t len)
> {
> static atomic_t a = ATOMIC_INIT(0);
> static char bufs[HEX2STR_BUFFERS][3 * HEX2STR_MAX_LEN + 1];
> @@ -514,18 +513,17 @@ static char *hex2str(void *buf, int len)
> if (len > HEX2STR_MAX_LEN)
> len = HEX2STR_MAX_LEN;
>
> - if (len <= 0) {
> - ret[0] = '\0';
> - return ret;
> - }
> + if (len == 0)
> + goto exit;
>
> while (len--) {
> - *obuf++ = BIN2HEX(*ibuf >> 4);
> - *obuf++ = BIN2HEX(*ibuf & 0xf);
> + obuf = pack_hex_byte(obuf, *ibuf++);
> *obuf++ = '-';
> - ibuf++;
> }
> - *(--obuf) = '\0';
> + obuf--;
> +
> +exit:
> + *obuf = '\0';
>
> return ret;
> }
--
Regards,
Pavel Roskin
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2011-09-28 20:41 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20110919232602.ac450450.akpm00@gmail.com>
[not found] ` <fa146966b0ce1e7f04d59eb27cc0e968f51b22de.1316774801.git.andriy.shevchenko@linux.intel.com>
2011-09-23 10:47 ` [PATCH 2/2] wireless: at76c50x: use native hex_pack_byte() method Andy Shevchenko
2011-09-27 11:51 ` [PATCHv2] " Andy Shevchenko
2011-09-27 12:01 ` [PATCHv2.1] " Andy Shevchenko
2011-09-27 19:47 ` Pavel Roskin
2011-09-28 8:11 ` Andy Shevchenko
2011-09-28 9:30 ` [PATCHv3] " Andy Shevchenko
2011-09-28 20:40 ` Pavel Roskin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).