INCLUDE_CONFIG_FILE off-by-one problem

Danny Braniss danny at cs.huji.ac.il
Sat Jun 30 08:01:32 UTC 2007


> On Sat, Jun 30, 2007 at 09:00:13AM +0300, Danny Braniss wrote:
> > > On Wed, Jun 06, 2007 at 10:18:40AM +0300, Danny Braniss wrote:
> > > > to get the config file from the kernel, one can use config -k, which
> > > > executes elfdump to get the offset and size. The size is actually 1(one)
> > > > byte too big, and so the output of config -k contains a NULL/0/^@ as
> > > > the last byte. I think the problem is in the elf file.
> > > 
> > > Why do you think that the problem lies in the ELF file?
> > the size is wrongly reported.
> 
> Hm. Not sure which notion of size you mean in this context.
> Configuration file is basically pretty standard sysctl, from which it's
> exported.
> 
> > 
> > > 
> > > Can you confirm that following sysctls:
> > > 
> > > 	kern.geom.confxml
> > > 	kern.geom.conftxt
> > > 
> > > don't suffer from the same problem?
> > they are both empty. (and yes, geom_label is loaded).
> 
> They're not related with GEOM_LABEL. I belive you haven't used -b flag
> while trying to see their contents. If you try:
> 
> 	sysctl -b kern.geom.confxml
> 
> or
> 
> 	sysctl -b kern.geom.conftxt
> 
> You'll notice these sysctls also contain NULL byte at the end, and they
> both suffer from being recognized as a binary files, while piped to
> grep(1).
> 
> I'll look into this. If the kernel side of this interface is correct, I'm
> going to simply modify config(8) to skip the last byte of the output.

ok, so here is the output, and it seems bad under 6.2 too.
bsd> sysctl -b kern.geom.confxml | cat -v|tail
      <rank>4</rank>
        <consumer id="0xffffff00ac73fd00">
          <geom ref="0xffffff00ac999900"/>
          <provider ref="0xffffff00ac591500"/>
          <mode>r1w1e1</mode>
        </consumer>
    </geom>
  </class>
</mesh>
^@bsd> 
^
|
+------ the extra null
> 
> Thanks for the report,
thank you!
	danny




More information about the freebsd-current mailing list