lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 20 Nov 2013 15:51:59 -0800 From: Josh Triplett <josh@...htriplett.org> To: Al Viro <viro@...IV.linux.org.uk> Cc: Joe Perches <joe@...ches.com>, Erico Nunes <nunes.erico@...il.com>, linux-sparse@...r.kernel.org, dwmw2 <dwmw2@...radead.org>, linux-mtd <linux-mtd@...ts.infradead.org>, linux-kernel <linux-kernel@...r.kernel.org> Subject: Re: [PATCH] jffs2: fix sparse errors: directive in argument list On Mon, Nov 18, 2013 at 01:33:49AM +0000, Al Viro wrote: > On Sun, Nov 17, 2013 at 02:45:05PM -0800, Joe Perches wrote: > > On Sun, 2013-11-17 at 20:34 -0200, Erico Nunes wrote: > > > Do you mean it as an error in the sparse tool? > > > > Yes. I think it's a defect in how sparse > > treats string concatenation. > > > > That style: > > > > printk("%s\n", > > #ifdef FOO > > "foo" > > #endif > > #ifdef BAR > > "bar" > > #endif > > "string"); > > > > is pretty common in the kernel sources. > > ... and it's perfectly fine, until somebody starts playing in nasal > daemon country and do that in *macro* arguments. And a nasal daemon > country it is - it's an undefined behaviour. See 6.10.3p11 in C99. > And trying to define a semantics for that gets real ugly real fast. > sparse matches gcc behaviour (I hope), but it warns about such abuses. > It's a defect, all right - one being reported by sparse. > > Folks, please, RTFStandard if you decide to play clever games with > preprocessing. Chapter 6.10 is not particulary long or complicated. > C99 has improved the preprocessor semantics a whole lot compared to > the earlier horrible mess (mostly by defining it in terms of token > stream transformations rather then text ones), but it's still very > easy to abuse... And since pr_foo (and the underlying pr_fmt) are already macros, that's exactly the problem. - Josh Triplett -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists