From c2a75094b58cc11b4985a00e3e6bb4fd341b4cb1 Mon Sep 17 00:00:00 2001
From: Lev Walkin <vlm@lionet.info>
Date: Tue, 14 Mar 2006 11:52:12 +0000
Subject: [PATCH] class field access problem

---
 ChangeLog                    | 5 ++++-
 libasn1compiler/asn1c_misc.c | 4 +++-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index d6150ef5..b140053f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,10 @@
 
-0.9.21:	2006-Mar-09
+0.9.21:	2006-Mar-14
 
 	* skeletons/standard-modules directory is now used for standard types.
 	* Refactored system for parsing Information Object Classes.
+	* Fixed class field access problem (Test case 98)
+	  (Severity: medim; Security impact: none)
 
 0.9.20:	2006-Mar-06
 
@@ -476,6 +478,7 @@ SEVERITY.
 SECURITY IMPACT.
     This term applies to the amount of potential damage a bug exploitation
     could cause.
+	none:	No malicious exploitation is possible.
 	low:	The local exploitation is unlikely; the remote exploitation
 		is impossible.
 	medium:	The remote exploitation is possible when a particular ASN.1
diff --git a/libasn1compiler/asn1c_misc.c b/libasn1compiler/asn1c_misc.c
index 779426aa..8805347b 100644
--- a/libasn1compiler/asn1c_misc.c
+++ b/libasn1compiler/asn1c_misc.c
@@ -131,6 +131,8 @@ asn1c_type_name(arg_t *arg, asn1p_expr_t *expr, enum tnfmt _format) {
 		while(top_parent->parent_expr)
 			top_parent = top_parent->parent_expr;
 
+	DEBUG("asn1c_type_name(%s: 0x%x)", expr->Identifier, expr->expr_type);
+
 	switch(expr->expr_type) {
 	case A1TC_REFERENCE:
 		typename = expr->reference->components[
@@ -144,7 +146,7 @@ asn1c_type_name(arg_t *arg, asn1p_expr_t *expr, enum tnfmt _format) {
 			 */
 			tmp.expr = asn1f_class_access_ex(arg->asn,
 				arg->expr->module, arg->expr, expr->reference);
-			if(tmp.expr) return NULL;
+			if(!tmp.expr) return NULL;
 
 			return asn1c_type_name(&tmp, tmp.expr, _format);
 		}
-- 
GitLab