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. 

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@

Attachment: pgp9FEBfHK84n.pgp
Description: PGP signature

Reply via email to