Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(811)

Side by Side Diff: openssl/crypto/err/err_prn.c

Issue 9254031: Upgrade chrome's OpenSSL to same version Android ships with. (Closed) Base URL: http://src.chromium.org/svn/trunk/deps/third_party/openssl/
Patch Set: '' Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « openssl/crypto/err/err_def.c ('k') | openssl/crypto/err/err_str.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* crypto/err/err_prn.c */ 1 /* crypto/err/err_prn.c */
2 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * This package is an SSL implementation written 5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com). 6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL. 7 * The implementation was written so as to conform with Netscapes SSL.
8 * 8 *
9 * This library is free for commercial and non-commercial use as long as 9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions 10 * the following conditions are aheared to. The following conditions
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 65
66 void ERR_print_errors_cb(int (*cb)(const char *str, size_t len, void *u), 66 void ERR_print_errors_cb(int (*cb)(const char *str, size_t len, void *u),
67 void *u) 67 void *u)
68 { 68 {
69 unsigned long l; 69 unsigned long l;
70 char buf[256]; 70 char buf[256];
71 char buf2[4096]; 71 char buf2[4096];
72 const char *file,*data; 72 const char *file,*data;
73 int line,flags; 73 int line,flags;
74 unsigned long es; 74 unsigned long es;
75 CRYPTO_THREADID cur;
75 76
76 » es=CRYPTO_thread_id(); 77 » CRYPTO_THREADID_current(&cur);
78 » es=CRYPTO_THREADID_hash(&cur);
77 while ((l=ERR_get_error_line_data(&file,&line,&data,&flags)) != 0) 79 while ((l=ERR_get_error_line_data(&file,&line,&data,&flags)) != 0)
78 { 80 {
79 ERR_error_string_n(l, buf, sizeof buf); 81 ERR_error_string_n(l, buf, sizeof buf);
80 BIO_snprintf(buf2, sizeof(buf2), "%lu:%s:%s:%d:%s\n", es, buf, 82 BIO_snprintf(buf2, sizeof(buf2), "%lu:%s:%s:%d:%s\n", es, buf,
81 file, line, (flags & ERR_TXT_STRING) ? data : ""); 83 file, line, (flags & ERR_TXT_STRING) ? data : "");
82 if (cb(buf2, strlen(buf2), u) <= 0) 84 if (cb(buf2, strlen(buf2), u) <= 0)
83 break; /* abort outputting the error report */ 85 break; /* abort outputting the error report */
84 } 86 }
85 } 87 }
86 88
87 #ifndef OPENSSL_NO_FP_API 89 #ifndef OPENSSL_NO_FP_API
88 static int print_fp(const char *str, size_t len, void *fp) 90 static int print_fp(const char *str, size_t len, void *fp)
89 { 91 {
90 BIO bio; 92 BIO bio;
91 93
92 BIO_set(&bio,BIO_s_file()); 94 BIO_set(&bio,BIO_s_file());
93 BIO_set_fp(&bio,fp,BIO_NOCLOSE); 95 BIO_set_fp(&bio,fp,BIO_NOCLOSE);
94 96
95 return BIO_printf(&bio, "%s", str); 97 return BIO_printf(&bio, "%s", str);
96 } 98 }
97 void ERR_print_errors_fp(FILE *fp) 99 void ERR_print_errors_fp(FILE *fp)
98 { 100 {
99 ERR_print_errors_cb(print_fp, fp); 101 ERR_print_errors_cb(print_fp, fp);
100 } 102 }
101 #endif 103 #endif
102 104
103 void ERR_error_string_n(unsigned long e, char *buf, size_t len) 105 static int print_bio(const char *str, size_t len, void *bp)
104 { 106 {
105 » char lsbuf[64], fsbuf[64], rsbuf[64]; 107 » return BIO_write((BIO *)bp, str, len);
106 » const char *ls,*fs,*rs; 108 » }
107 » unsigned long l,f,r; 109 void ERR_print_errors(BIO *bp)
108 110 » {
109 » l=ERR_GET_LIB(e); 111 » ERR_print_errors_cb(print_bio, bp);
110 » f=ERR_GET_FUNC(e);
111 » r=ERR_GET_REASON(e);
112
113 » ls=ERR_lib_error_string(e);
114 » fs=ERR_func_error_string(e);
115 » rs=ERR_reason_error_string(e);
116
117 » if (ls == NULL)
118 » » BIO_snprintf(lsbuf, sizeof(lsbuf), "lib(%lu)", l);
119 » if (fs == NULL)
120 » » BIO_snprintf(fsbuf, sizeof(fsbuf), "func(%lu)", f);
121 » if (rs == NULL)
122 » » BIO_snprintf(rsbuf, sizeof(rsbuf), "reason(%lu)", r);
123
124 » BIO_snprintf(buf, len,"error:%08lX:%s:%s:%s", e, ls?ls:lsbuf,
125 » » fs?fs:fsbuf, rs?rs:rsbuf);
126 » if (strlen(buf) == len-1)
127 » » {
128 » » /* output may be truncated; make sure we always have 5
129 » » * colon-separated fields, i.e. 4 colons ... */
130 #define NUM_COLONS 4
131 » » if (len > NUM_COLONS) /* ... if possible */
132 » » » {
133 » » » int i;
134 » » » char *s = buf;
135 » » »
136 » » » for (i = 0; i < NUM_COLONS; i++)
137 » » » » {
138 » » » » char *colon = strchr(s, ':');
139 » » » » if (colon == NULL || colon > &buf[len-1] - NUM_C OLONS + i)
140 » » » » » {
141 » » » » » /* set colon no. i at last possible posi tion
142 » » » » » * (buf[len-1] is the terminating 0)*/
143 » » » » » colon = &buf[len-1] - NUM_COLONS + i;
144 » » » » » *colon = ':';
145 » » » » » }
146 » » » » s = colon + 1;
147 » » » » }
148 » » » }
149 » » }
150 } 112 }
151 113
152 /* BAD for multi-threading: uses a local buffer if ret == NULL */ 114 »
153 /* ERR_error_string_n should be used instead for ret != NULL
154 * as ERR_error_string cannot know how large the buffer is */
155 char *ERR_error_string(unsigned long e, char *ret)
156 » {
157 » static char buf[256];
158
159 » if (ret == NULL) ret=buf;
160 » ERR_error_string_n(e, ret, 256);
161
162 » return ret;
163 » }
OLDNEW
« no previous file with comments | « openssl/crypto/err/err_def.c ('k') | openssl/crypto/err/err_str.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698