HI,

"Fixing" by putting a "0" on the end, and then calling
printf is not a good approach. This is because the
value of OCTET STIRNGs are binary, the the result
when just doing a printf may not result is a usable
output. Even when the value of the OCTET STRING is
suppose to be printable, the SNMP agent may have
a bug and return a value that contains nonprintable
octets. Thus, I suggest that you ALWAYS use a function
that takes an OCTET STRING value and creates a displayable
string in a supplied buffer, and then printf the resulting
buffer.

PS Be aware of OCTET STRINGs whose value is UTF-8, and
   know what you want to do for non-US-ASCII display.

On Fri, 16 Jun 2006, Gustaf Gunnarsson wrote:
> Robert Story wrote:
> > On Thu, 15 Jun 2006 12:41:36 +0200 Gustaf wrote:
> > GG> The problem I am having is that the asn_parse_string() function 
> > GG> null-terminates the string it parses if the size of the recieving char* 
> > GG> is large enough to contain such terminator.
> > GG> 
> > GG> I think this behaivour is wrong and that the returned string should 
> > GG> always be null-terminated (or never).
> > 
> > The correct answer is never, since ASN strings are not null terminated.
> > However, if the buffer is large enough, we do add a null because so many
> > people think they are null terminated and pass them to printf and friends.
> > It's just a little additional safety.
> 
> I really think this is wrong.
> 
> The reason why I think it is wrong is exactly what you mention, people 
> will pass this string to printf() since it works. I however think it 
> would be a lot better if people would learn the first time to do 
> something like:
> 
> asn1p = asn_parse_string(asn1p, &asn1p_len,
>                   &asn1p_type, string, &string_len_MINUS_ONE);
> *(string+&string_len_MINUS_ONE) = '\0';
> 
> Instead of having to figure out that this is what they need to do the 
> 2784117371 time they run it and the program segfaults in their face 
> (without a clue why it happened).
> 
> Anyways, I am not going to argue about it (more than this :P).
> 
> Thanks for your answer.
> 
> //Gustaf

Regards,
/david t. perkins



_______________________________________________
Net-snmp-coders mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/net-snmp-coders

Reply via email to