[#7708] Bug in libsnmp-ruby1.8 — Hadmut Danisch <hadmut@...>

Hi,

8 messages 2006/04/11
[#7709] Re: Bug in libsnmp-ruby1.8 — Eric Hodel <drbrain@...7.net> 2006/04/11

On Apr 11, 2006, at 6:23 AM, Hadmut Danisch wrote:

[#7770] Re: possible defect in array.c — "Brown, Warren" <warrenbrown@...>

> rb_range_beg_len (in range.c) does set beg and len.

13 messages 2006/04/26
[#7771] Re: possible defect in array.c — "Pat Eyler" <rubypate@...> 2006/04/26

On 4/26/06, Brown, Warren <warrenbrown@aquire.com> wrote:

possible defect in ext/openssl/ossl_ans1.c (with fix)

From: "Pat Eyler" <rubypate@...>
Date: 2006-04-27 04:02:49 UTC
List: ruby-core #7785
768  		    VALUE klass = *ossl_asn1_info[tag].klass;

Event var_decl: Declared variable "flag" without initializer
Also see events: [uninit_use_in_call]

769  		    long flag;

At conditional (1): "rb_obj_is_kind_of == 0" taking false path

770  		    if(!rb_obj_is_kind_of(value, rb_cArray)){
771  			switch(tag){
772  			case V_ASN1_BOOLEAN:
773  			    value = decode_bool(start, hlen+len);
774  			    break;
775  			case V_ASN1_INTEGER:
776  			    value = decode_int(start, hlen+len);
777  			    break;
778  			case V_ASN1_BIT_STRING:
779  			    value = decode_bstr(start, hlen+len, &flag);
780  			    break;
781  			case V_ASN1_NULL:
782  			    value = decode_null(start, hlen+len);
783  			    break;
784  			case V_ASN1_ENUMERATED:
785  			    value = decode_enum(start, hlen+len);
786  			    break;
787  			case V_ASN1_OBJECT:
788  			    value = decode_obj(start, hlen+len);
789  			    break;
790  			case V_ASN1_UTCTIME:           /* FALLTHROUGH */
791  			case V_ASN1_GENERALIZEDTIME:
792  			    value = decode_time(start, hlen+len);
793  			    break;
794  			default:
795  			    /* use original value */
796  			    break;
797  			}
798  		    }
799  		    asn1data = rb_funcall(klass, rb_intern("new"), 1, value);

At conditional (2): "tag == 3" taking true path

800  		    if(tag == V_ASN1_BIT_STRING){

Event uninit_use_in_call: Using uninitialized value "flag" in call to
function "rb_int2inum" [model]
Also see events: [var_decl]

801  			rb_iv_set(asn1data, "@unused_bits", LONG2NUM(flag));
802  		    }
803  		}


here's the diff (which follows the advice I received from everyone after
the last one.)


diff -c -r1.13 ossl_asn1.c
*** ext/openssl/ossl_asn1.c     3 Feb 2006 09:15:38 -0000       1.13
--- ext/openssl/ossl_asn1.c     27 Apr 2006 03:49:37 -0000
***************
*** 766,772 ****
        if(tag_class == sUNIVERSAL &&
           tag < ossl_asn1_info_size && ossl_asn1_info[tag].klass){
            VALUE klass = *ossl_asn1_info[tag].klass;
!           long flag;
            if(!rb_obj_is_kind_of(value, rb_cArray)){
                switch(tag){
                case V_ASN1_BOOLEAN:
--- 766,772 ----
        if(tag_class == sUNIVERSAL &&
           tag < ossl_asn1_info_size && ossl_asn1_info[tag].klass){
            VALUE klass = *ossl_asn1_info[tag].klass;
!           long flag = 0;
            if(!rb_obj_is_kind_of(value, rb_cArray)){
                switch(tag){
                case V_ASN1_BOOLEAN:


In This Thread

Prev Next