Messages in this thread | | | Date | Thu, 2 Aug 2007 22:03:03 +0200 | From | "Jesper Juhl" <> | Subject | Re: gcc fixed size char array initialization bug - known? |
| |
On 02/08/07, Jan Engelhardt <jengelh@computergmbh.de> wrote: > > On Aug 2 2007 21:55, Guennadi Liakhovetski wrote: > >Hi > > > >I've run across the following gcc "feature": > > > > char c[4] = "01234"; > > > >gcc emits a nice warning > > > >warning: initializer-string for array of chars is too long > > > >But do a > > > > char c[4] = "0123"; > > > >and - a wonder - no warning. No warning with gcc 3.3.2, 3.3.5, 3.4.5, > >4.1.2. I was told 4.2.x does produce a warning. Now do a > > > > struct { > > char c[4]; > > int i; > > } t; > > t.i = 0x12345678; > > strcpy(t.c, c); > > > >and t.i is silently corrupted. Just wanted to ask if this is known, > >really... > > What does this have to do with the kernel? The string "0123" is > generally _five_ characters long, so c[4] is not enough. > Or use strncpy. > I believe Guennadi's point is that gcc does not warn about it in the case of c[4] = "0123"; but only in the case of c[4] = "01234" - so if we do have such initializations in the kernel we may have some bugs hiding there that gcc doesn't warn us about.
-- Jesper Juhl <jesper.juhl@gmail.com> Don't top-post http://www.catb.org/~esr/jargon/html/T/top-post.html Plain text mails only, please http://www.expita.com/nomime.html - 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/
| |