Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1284664 > unrolled thread
| Started by | Rasmus Villemoes <linux@rasmusvillemoes.dk> |
|---|---|
| First post | 2015-12-06 01:10 +0100 |
| Last post | 2015-12-06 01:30 +0100 |
| Articles | 4 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH] staging: speakup: kobjects.c: fix char argument to %02x Rasmus Villemoes <linux@rasmusvillemoes.dk> - 2015-12-06 01:10 +0100
Re: [PATCH] staging: speakup: kobjects.c: fix char argument to %02x Joe Perches <joe@perches.com> - 2015-12-06 01:20 +0100
Re: [PATCH] staging: speakup: kobjects.c: fix char argument to %02x Rasmus Villemoes <linux@rasmusvillemoes.dk> - 2015-12-06 01:30 +0100
Re: [PATCH] staging: speakup: kobjects.c: fix char argument to %02x Joe Perches <joe@perches.com> - 2015-12-06 01:30 +0100
| From | Rasmus Villemoes <linux@rasmusvillemoes.dk> |
|---|---|
| Date | 2015-12-06 01:10 +0100 |
| Subject | [PATCH] staging: speakup: kobjects.c: fix char argument to %02x |
| Message-ID | <qCv3R-7XL-19@gated-at.bofh.it> |
If char is signed and ch happens to be negative, printing ch with "%02x" will not do as intended (when ch is -19, one will get "ffffffed"). Fix that by masking with 0xff. Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk> --- drivers/staging/speakup/kobjects.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/speakup/kobjects.c b/drivers/staging/speakup/kobjects.c index fdfeb42b2b8f..8b88f03e266b 100644 --- a/drivers/staging/speakup/kobjects.c +++ b/drivers/staging/speakup/kobjects.c @@ -567,7 +567,7 @@ ssize_t spk_var_show(struct kobject *kobj, struct kobj_attribute *attr, if (ch >= ' ' && ch < '~') *cp1++ = ch; else - cp1 += sprintf(cp1, "\\x%02x", ch); + cp1 += sprintf(cp1, "\\x%02x", ch & 0xff); } *cp1++ = '"'; *cp1++ = '\n'; -- 2.6.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [next] | [standalone]
| From | Joe Perches <joe@perches.com> |
|---|---|
| Date | 2015-12-06 01:20 +0100 |
| Message-ID | <qCvdx-81R-17@gated-at.bofh.it> |
| In reply to | #1284664 |
On Sun, 2015-12-06 at 01:05 +0100, Rasmus Villemoes wrote: > If char is signed and ch happens to be negative, printing ch with > "%02x" will not do as intended (when ch is -19, one will get > "ffffffed"). Fix that by masking with 0xff. I presume there are a lot of these in the kernel. Did you use a tool to find this or just inspection? -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Rasmus Villemoes <linux@rasmusvillemoes.dk> |
|---|---|
| Date | 2015-12-06 01:30 +0100 |
| Message-ID | <qCvnc-84X-9@gated-at.bofh.it> |
| In reply to | #1284669 |
On Sun, Dec 06 2015, Joe Perches <joe@perches.com> wrote: > On Sun, 2015-12-06 at 01:05 +0100, Rasmus Villemoes wrote: >> If char is signed and ch happens to be negative, printing ch with >> "%02x" will not do as intended (when ch is -19, one will get >> "ffffffed"). Fix that by masking with 0xff. > > I presume there are a lot of these in the kernel. > Did you use a tool to find this or just inspection? Initially I just used coccinelle, for the most obvious candidates (with --include-headers-for-types): @r depends on !patch@ char c; @@ * \( sprintf \| snprintf \| scnprintf \) (..., c, ...) That gives lots of false positives (arguments to %c), but it's not too bad piping to less, searching for "%[0.]2[xX]", and then checking manually. I'm now doing a much wider range of printf functions, but it's really past my bedtime, so feel free to pick up the ball :-) Rasmus -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [next] | [standalone]
| From | Joe Perches <joe@perches.com> |
|---|---|
| Date | 2015-12-06 01:30 +0100 |
| Message-ID | <qCvnc-84X-7@gated-at.bofh.it> |
| In reply to | #1284670 |
On Sun, 2015-12-06 at 01:21 +0100, Rasmus Villemoes wrote: > On Sun, Dec 06 2015, Joe Perches <joe@perches.com> wrote: > > > On Sun, 2015-12-06 at 01:05 +0100, Rasmus Villemoes wrote: > > > If char is signed and ch happens to be negative, printing ch with > > > "%02x" will not do as intended (when ch is -19, one will get > > > "ffffffed"). Fix that by masking with 0xff. > > > > I presume there are a lot of these in the kernel. > > Did you use a tool to find this or just inspection? > > Initially I just used coccinelle, for the most obvious candidates > (with > --include-headers-for-types): > > @r depends on !patch@ > char c; > @@ > * \( sprintf \| snprintf \| scnprintf \) (..., c, ...) > > That gives lots of false positives (arguments to %c), but it's not > too > bad piping to less, searching for "%[0.]2[xX]", and then checking > manually. > > I'm now doing a much wider range of printf functions, but it's really > past my bedtime, so feel free to pick up the ball :-) > Thanks, but no thanks. It's your ball. Enjoy... You might consider looking for s8 and s16 emitted as %u too. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web