Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 10 Feb 2009 22:57:39 +0100
From:      Roman Divacky <rdivacky@freebsd.org>
To:        net@freebsd.org
Cc:        mav@freebsd.org
Subject:   unsafe C in netgraph/pppoed.c
Message-ID:  <20090210215739.GA24102@freebsd.org>

next in thread | raw e-mail | index | archive | help

--xHFwDpU9dbj6ez1V
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

hi


struct pppoe_tag {
        u_int16_t tag_type;
        u_int16_t tag_len;
        char tag_data[];
}__packed;

struct pppoe_hdr{
        u_int8_t ver:4;
        u_int8_t type:4;
        u_int8_t code;
        u_int16_t sid;
        u_int16_t length;
        struct pppoe_tag tag[];
}__packed;


this is inherently unsafe as the tag_data can only have 0 elements
to be used safely. gcc compiles this without warning although there
should be a big one.=20

I found this using clang, which produces this error/warning:

lev pppoed$ ccc -c pppoed.c                                                =
                                        ccc: Unknown host 'freebsd', using =
generic host information.
In file included from pppoed.c:41:
/usr/include/netgraph/ng_pppoe.h:213:22: error: 'struct pppoe_tag' may not =
be used as an array element due to flexible array member
        struct pppoe_tag tag[];
                            ^
1 diagnostic generated.

can you guys take a look at this issue?

thnx!

roman

p.s. please keep me CCed as I am not subscribed to net@

--xHFwDpU9dbj6ez1V
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.10 (FreeBSD)

iEYEARECAAYFAkmR+FIACgkQLVEj6D3CBEyIfgCeIu4KXgcWiuBtaEc0vZTxNh6q
fVwAn24pZibUbXncp6c2bYvPp4EQqS7T
=ZR3+
-----END PGP SIGNATURE-----

--xHFwDpU9dbj6ez1V--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090210215739.GA24102>