Subject: Re: [IPV6]: ROUTE:read ifname in rt6_info_route()

From: Stephen Hemminger <[email-masked]>
Date: Thu, 16 Apr 2009 10:27:31 -0700

On Thu, 16 Apr 2009 18:47:04 +0200
Andreas Schwab <[email-masked]> wrote:

> Stephen Hemminger <[email-masked]> writes:
> 
> > On Thu, 16 Apr 2009 04:38:00 -0700 (PDT)
> > David Miller <[email-masked]> wrote:
> >
> >> From: Yuta sugiura <[email-masked]>
> >> Date: Thu, 16 Apr 2009 20:05:05 +0900
> >> 
> >> > Hi,
> >> > I have a suggestion about /proc/net/IPv6_route format.
> >> > In rt6_info_route(), interface name is treated as a maximum 8
> >> > characters.
> >> > But the type of (struct rt6_inf *)->u.dst.dev->name is char[IFNAMESIZ=
> >> > 16]
> >> > so, I think that it should change "%8s" to "%16s".
> >> 
> >> Isn't there a way to pass the field length as a paramenter
> >> to formatting functions?  Then we can just pass in
> >> IFNAMESIZE as that parameter.
> >
> > 	seq_printf(m, " %08x %08x %08x %08x %*s\n"
> >                    rt->rt6i_metric, atomic_read(&rt->u.dst.__refcnt),
> >  		   rt->u.dst.__use, rt->rt6i_flags,
> >                    IFNAMESIZE, 
> >  		   rt->rt6i_dev ? rt->rt6i_dev->name : "")
> 
> Actually since it is the last item on the line a field width does not
> make much sense, and omitting it would print the name left justified.
> 
> (And RT6_INFO_LEN is not used any more.)
> 
> Andreas.
> 

The issue is what happens if name is not null terminated. in this case
I bet the kernel already handles that.