Fix incorrect handling of special characters.
authorLutz Jänicke <jaenicke@openssl.org>
Wed, 21 Feb 2007 17:44:08 +0000 (17:44 +0000)
committerLutz Jänicke <jaenicke@openssl.org>
Wed, 21 Feb 2007 17:44:08 +0000 (17:44 +0000)
PR: 1459
Submitted by: tnitschke@innominate.com
Reviewed by: steve@openssl.org

crypto/asn1/a_strex.c

index a07122ba479445698137fa0bed748601b9834306..5155bab351e5473a6d78a78ab679df4eb880a4f2 100644 (file)
@@ -170,7 +170,7 @@ static int do_buf(unsigned char *buf, int buflen,
        q = buf + buflen;
        outlen = 0;
        while(p != q) {
-               if(p == buf) orflags = CHARTYPE_FIRST_ESC_2253;
+               if(p == buf && flags & ASN1_STRFLGS_ESC_2253) orflags = CHARTYPE_FIRST_ESC_2253;
                else orflags = 0;
                switch(type & BUF_TYPE_WIDTH_MASK) {
                        case 4:
@@ -195,7 +195,7 @@ static int do_buf(unsigned char *buf, int buflen,
                        p += i;
                        break;
                }
-               if (p == q) orflags = CHARTYPE_LAST_ESC_2253;
+               if (p == q && flags & ASN1_STRFLGS_ESC_2253) orflags = CHARTYPE_LAST_ESC_2253;
                if(type & BUF_TYPE_CONVUTF8) {
                        unsigned char utfbuf[6];
                        int utflen;