On Mon, 2013-11-25 at 19:04 +0800, zhuyj wrote:
> On 11/25/2013 02:34 AM, Magnus Fromreide wrote:
> > On Fri, 2013-11-22 at 14:27 +0800, zhuyj wrote:
> > > 
> > > 4.patch -p1 < V5-7-patches-snmpTargetParam_support_zero_OID.patch
> > snmpTargetAddrEntry.c:
> > Chunk #2 is unnecessary - setting members to 0 before freeing the 
> >          object they are members of.
> > 
> > snmpTargetAddrEntry.h:
> > Putting the variable in the hole after nameLen will leave the size of
> > targetAddrTable_struct unchanged while the suggested location will
> > expand the size of it by 4 (or 8 on 64-bit) bytes.
> > 
> > snmpTargetParamsEntry.c:
> > Chunk #2 is unnecessary - setting a member to 0 before freeing the 
> >          object it is a member of.
> > Chunk #9? (get_paramEntry) - it would be more efficient and correct 
> >           to check that nameLen == ptr->paramNameLen before memcmp'ing
> >           name and paramName, in particular if nameLen < paramNameLen.
> > 
> > target.c:
> > Certificate lookup under DTLS uses only the part of the name up to the
> > first '\0'.
> Hi, MF
> 
> I agree with other advices from you. But I do not understand this:
> target.c:
> Certificate lookup under DTLS uses only the part of the name up to the
> first '\0'.
> 
> Would you like to explain this in details? Thanks a lot.

Sure.

target/target.c:205

 cert = netsnmp_cert_find(NS_CERT_IDENTITY, NS_CERTKEY_TARGET_PARAM, 
                          targaddrs->params);

Now, assume that targaddrs->params contains embedded NUL characters.
> 
> > >     patch -p1 < V5-7-patches-fix-param-length.patch
> > >     patch -p1 < V5-7-patches-conf-support.patch
> > Why the memset's before read_config_save_octet_string?
> An example is as below.
> 
> If variable tmp is used as the line1, there are 6 'x' in this variable
> tmp.
> we will copy 4 'y' to tmp, now the variable tmp is as below line2 if
> we do not
> memset tmp. It is not what we expect.
> 
> line1: tmp:   xxxxxx            
> line2: using: yyyyxx            

You can't use NUL as a end of string marker since NUL is a perfectly
valid character. When handing strings to printf you get around that with

printf("%.*s", tmp, 4);

For other methods one usually have to add a method that takes a string
width.

/MF


------------------------------------------------------------------------------
Shape the Mobile Experience: Free Subscription
Software experts and developers: Be at the forefront of tech innovation.
Intel(R) Software Adrenaline delivers strategic insight and game-changing 
conversations that shape the rapidly evolving mobile landscape. Sign up now. 
http://pubads.g.doubleclick.net/gampad/clk?id=63431311&iu=/4140/ostg.clktrk
_______________________________________________
Net-snmp-coders mailing list
Net-snmp-coders@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders

Reply via email to