| Index: openssl/crypto/asn1/a_strex.c | 
| =================================================================== | 
| --- openssl/crypto/asn1/a_strex.c	(revision 105093) | 
| +++ openssl/crypto/asn1/a_strex.c	(working copy) | 
| @@ -74,7 +74,12 @@ | 
|  | 
| #define CHARTYPE_BS_ESC		(ASN1_STRFLGS_ESC_2253 | CHARTYPE_FIRST_ESC_2253 | CHARTYPE_LAST_ESC_2253) | 
|  | 
| +#define ESC_FLAGS (ASN1_STRFLGS_ESC_2253 | \ | 
| +		  ASN1_STRFLGS_ESC_QUOTE | \ | 
| +		  ASN1_STRFLGS_ESC_CTRL | \ | 
| +		  ASN1_STRFLGS_ESC_MSB) | 
|  | 
| + | 
| /* Three IO functions for sending data to memory, a BIO and | 
| * and a FILE pointer. | 
| */ | 
| @@ -148,6 +153,13 @@ | 
| if(!io_ch(arg, tmphex, 3)) return -1; | 
| return 3; | 
| } | 
| +	/* If we get this far and do any escaping at all must escape | 
| +	 * the escape character itself: backslash. | 
| +	 */ | 
| +	if (chtmp == '\\' && flags & ESC_FLAGS) { | 
| +		if(!io_ch(arg, "\\\\", 2)) return -1; | 
| +		return 2; | 
| +	} | 
| if(!io_ch(arg, &chtmp, 1)) return -1; | 
| return 1; | 
| } | 
| @@ -292,11 +304,6 @@ | 
| 4, -1, 2		/* 28-30 */ | 
| }; | 
|  | 
| -#define ESC_FLAGS (ASN1_STRFLGS_ESC_2253 | \ | 
| -		  ASN1_STRFLGS_ESC_QUOTE | \ | 
| -		  ASN1_STRFLGS_ESC_CTRL | \ | 
| -		  ASN1_STRFLGS_ESC_MSB) | 
| - | 
| /* This is the main function, print out an | 
| * ASN1_STRING taking note of various escape | 
| * and display options. Returns number of | 
|  |