crypto/asn1/a_strex.c:478: error: UNINITIALIZED_VALUE
  The value read from fld_len was never initialized.
Showing all 1 steps of the trace


crypto/asn1/a_strex.c:478:5: 
476.   			if ((objlen < fld_len) && (flags & XN_FLAG_FN_ALIGN)) {
477.   				if (!do_indent(io_ch, arg, fld_len - objlen)) return -1;
478. > 				outlen += fld_len - objlen;
479.   			}
480.   			if(!io_ch(arg, sep_eq, sep_eq_len)) return -1;

static int do_name_ex(char_io *io_ch, void *arg, X509_NAME *n,
				int indent, unsigned long flags)
{
	int i, prev = -1, orflags, cnt;
	int fn_opt, fn_nid;
	ASN1_OBJECT *fn;
	ASN1_STRING *val;
	X509_NAME_ENTRY *ent;
	char objtmp[80];
	const char *objbuf;
	int outlen, len;
	char *sep_dn, *sep_mv, *sep_eq;
	int sep_dn_len, sep_mv_len, sep_eq_len;
	if(indent < 0) indent = 0;
	outlen = indent;
	if(!do_indent(io_ch, arg, indent)) return -1;
	switch (flags & XN_FLAG_SEP_MASK)
	{
		case XN_FLAG_SEP_MULTILINE:
		sep_dn = "\n";
		sep_dn_len = 1;
		sep_mv = " + ";
		sep_mv_len = 3;
		break;
		case XN_FLAG_SEP_COMMA_PLUS:
		sep_dn = ",";
		sep_dn_len = 1;
		sep_mv = "+";
		sep_mv_len = 1;
		indent = 0;
		break;
		case XN_FLAG_SEP_CPLUS_SPC:
		sep_dn = ", ";
		sep_dn_len = 2;
		sep_mv = " + ";
		sep_mv_len = 3;
		indent = 0;
		break;
		case XN_FLAG_SEP_SPLUS_SPC:
		sep_dn = "; ";
		sep_dn_len = 2;
		sep_mv = " + ";
		sep_mv_len = 3;
		indent = 0;
		break;
		default:
		return -1;
	}
	if(flags & XN_FLAG_SPC_EQ) {
		sep_eq = " = ";
		sep_eq_len = 3;
	} else {
		sep_eq = "=";
		sep_eq_len = 1;
	}
	fn_opt = flags & XN_FLAG_FN_MASK;
	cnt = X509_NAME_entry_count(n);
	for(i = 0; i < cnt; i++) {
		if(flags & XN_FLAG_DN_REV)
				ent = X509_NAME_get_entry(n, cnt - i - 1);
		else ent = X509_NAME_get_entry(n, i);
		if(prev != -1) {
			if(prev == ent->set) {
				if(!io_ch(arg, sep_mv, sep_mv_len)) return -1;
				outlen += sep_mv_len;
			} else {
				if(!io_ch(arg, sep_dn, sep_dn_len)) return -1;
				outlen += sep_dn_len;
				if(!do_indent(io_ch, arg, indent)) return -1;
				outlen += indent;
			}
		}
		prev = ent->set;
		fn = X509_NAME_ENTRY_get_object(ent);
		val = X509_NAME_ENTRY_get_data(ent);
		fn_nid = OBJ_obj2nid(fn);
		if(fn_opt != XN_FLAG_FN_NONE) {
			int objlen, fld_len;
			if((fn_opt == XN_FLAG_FN_OID) || (fn_nid==NID_undef) ) {
				OBJ_obj2txt(objtmp, 80, fn, 1);
				objbuf = objtmp;
			} else {
				if(fn_opt == XN_FLAG_FN_SN) {
					fld_len = FN_WIDTH_SN;
					objbuf = OBJ_nid2sn(fn_nid);
				} else if(fn_opt == XN_FLAG_FN_LN) {
					fld_len = FN_WIDTH_LN;
					objbuf = OBJ_nid2ln(fn_nid);
				} else objbuf = "";
			}
			objlen = strlen(objbuf);
			if(!io_ch(arg, objbuf, objlen)) return -1;
			if ((objlen < fld_len) && (flags & XN_FLAG_FN_ALIGN)) {
				if (!do_indent(io_ch, arg, fld_len - objlen)) return -1;
				outlen += fld_len - objlen;
			}
			if(!io_ch(arg, sep_eq, sep_eq_len)) return -1;
			outlen += objlen + sep_eq_len;
		}
		if((fn_nid == NID_undef) && (flags & XN_FLAG_DUMP_UNKNOWN_FIELDS))
					orflags = ASN1_STRFLGS_DUMP_ALL;
		else orflags = 0;
		len = do_print_ex(io_ch, arg, flags | orflags, val);
		if(len < 0) return -1;
		outlen += len;
	}
	return outlen;
}
['static int do_name_ex(char_io *io_ch, void *arg, X509_NAME *n,\n\t\t\t\tint indent, unsigned long flags)\n{\n\tint i, prev = -1, orflags, cnt;\n\tint fn_opt, fn_nid;\n\tASN1_OBJECT *fn;\n\tASN1_STRING *val;\n\tX509_NAME_ENTRY *ent;\n\tchar objtmp[80];\n\tconst char *objbuf;\n\tint outlen, len;\n\tchar *sep_dn, *sep_mv, *sep_eq;\n\tint sep_dn_len, sep_mv_len, sep_eq_len;\n\tif(indent < 0) indent = 0;\n\toutlen = indent;\n\tif(!do_indent(io_ch, arg, indent)) return -1;\n\tswitch (flags & XN_FLAG_SEP_MASK)\n\t{\n\t\tcase XN_FLAG_SEP_MULTILINE:\n\t\tsep_dn = "\\n";\n\t\tsep_dn_len = 1;\n\t\tsep_mv = " + ";\n\t\tsep_mv_len = 3;\n\t\tbreak;\n\t\tcase XN_FLAG_SEP_COMMA_PLUS:\n\t\tsep_dn = ",";\n\t\tsep_dn_len = 1;\n\t\tsep_mv = "+";\n\t\tsep_mv_len = 1;\n\t\tindent = 0;\n\t\tbreak;\n\t\tcase XN_FLAG_SEP_CPLUS_SPC:\n\t\tsep_dn = ", ";\n\t\tsep_dn_len = 2;\n\t\tsep_mv = " + ";\n\t\tsep_mv_len = 3;\n\t\tindent = 0;\n\t\tbreak;\n\t\tcase XN_FLAG_SEP_SPLUS_SPC:\n\t\tsep_dn = "; ";\n\t\tsep_dn_len = 2;\n\t\tsep_mv = " + ";\n\t\tsep_mv_len = 3;\n\t\tindent = 0;\n\t\tbreak;\n\t\tdefault:\n\t\treturn -1;\n\t}\n\tif(flags & XN_FLAG_SPC_EQ) {\n\t\tsep_eq = " = ";\n\t\tsep_eq_len = 3;\n\t} else {\n\t\tsep_eq = "=";\n\t\tsep_eq_len = 1;\n\t}\n\tfn_opt = flags & XN_FLAG_FN_MASK;\n\tcnt = X509_NAME_entry_count(n);\n\tfor(i = 0; i < cnt; i++) {\n\t\tif(flags & XN_FLAG_DN_REV)\n\t\t\t\tent = X509_NAME_get_entry(n, cnt - i - 1);\n\t\telse ent = X509_NAME_get_entry(n, i);\n\t\tif(prev != -1) {\n\t\t\tif(prev == ent->set) {\n\t\t\t\tif(!io_ch(arg, sep_mv, sep_mv_len)) return -1;\n\t\t\t\toutlen += sep_mv_len;\n\t\t\t} else {\n\t\t\t\tif(!io_ch(arg, sep_dn, sep_dn_len)) return -1;\n\t\t\t\toutlen += sep_dn_len;\n\t\t\t\tif(!do_indent(io_ch, arg, indent)) return -1;\n\t\t\t\toutlen += indent;\n\t\t\t}\n\t\t}\n\t\tprev = ent->set;\n\t\tfn = X509_NAME_ENTRY_get_object(ent);\n\t\tval = X509_NAME_ENTRY_get_data(ent);\n\t\tfn_nid = OBJ_obj2nid(fn);\n\t\tif(fn_opt != XN_FLAG_FN_NONE) {\n\t\t\tint objlen, fld_len;\n\t\t\tif((fn_opt == XN_FLAG_FN_OID) || (fn_nid==NID_undef) ) {\n\t\t\t\tOBJ_obj2txt(objtmp, 80, fn, 1);\n\t\t\t\tobjbuf = objtmp;\n\t\t\t} else {\n\t\t\t\tif(fn_opt == XN_FLAG_FN_SN) {\n\t\t\t\t\tfld_len = FN_WIDTH_SN;\n\t\t\t\t\tobjbuf = OBJ_nid2sn(fn_nid);\n\t\t\t\t} else if(fn_opt == XN_FLAG_FN_LN) {\n\t\t\t\t\tfld_len = FN_WIDTH_LN;\n\t\t\t\t\tobjbuf = OBJ_nid2ln(fn_nid);\n\t\t\t\t} else objbuf = "";\n\t\t\t}\n\t\t\tobjlen = strlen(objbuf);\n\t\t\tif(!io_ch(arg, objbuf, objlen)) return -1;\n\t\t\tif ((objlen < fld_len) && (flags & XN_FLAG_FN_ALIGN)) {\n\t\t\t\tif (!do_indent(io_ch, arg, fld_len - objlen)) return -1;\n\t\t\t\toutlen += fld_len - objlen;\n\t\t\t}\n\t\t\tif(!io_ch(arg, sep_eq, sep_eq_len)) return -1;\n\t\t\toutlen += objlen + sep_eq_len;\n\t\t}\n\t\tif((fn_nid == NID_undef) && (flags & XN_FLAG_DUMP_UNKNOWN_FIELDS))\n\t\t\t\t\torflags = ASN1_STRFLGS_DUMP_ALL;\n\t\telse orflags = 0;\n\t\tlen = do_print_ex(io_ch, arg, flags | orflags, val);\n\t\tif(len < 0) return -1;\n\t\toutlen += len;\n\t}\n\treturn outlen;\n}']