Mercurial > hg > nginx-vendor-current
comparison src/core/ngx_crypt.c @ 684:660139fd80ca NGINX_1_3_5
nginx 1.3.5
*) Change: the ngx_http_mp4_module module no longer skips tracks in
formats other than H.264 and AAC.
*) Bugfix: a segmentation fault might occur in a worker process if the
"map" directive was used with variables as values.
*) Bugfix: a segmentation fault might occur in a worker process if the
"geo" directive was used with the "ranges" parameter but without the
"default" parameter; the bug had appeared in 0.8.43.
Thanks to Zhen Chen and Weibin Yao.
*) Bugfix: in the -p command-line parameter handling.
*) Bugfix: in the mail proxy server.
*) Bugfix: of minor potential bugs.
Thanks to Coverity.
*) Bugfix: nginx/Windows could not be built with Visual Studio 2005
Express.
Thanks to HAYASHI Kentaro.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Tue, 21 Aug 2012 00:00:00 +0400 |
parents | 5cb5db9975ba |
children |
comparison
equal
deleted
inserted
replaced
683:28cc2a208803 | 684:660139fd80ca |
---|---|
192 | 192 |
193 static ngx_int_t | 193 static ngx_int_t |
194 ngx_crypt_ssha(ngx_pool_t *pool, u_char *key, u_char *salt, u_char **encrypted) | 194 ngx_crypt_ssha(ngx_pool_t *pool, u_char *key, u_char *salt, u_char **encrypted) |
195 { | 195 { |
196 size_t len; | 196 size_t len; |
197 ngx_int_t rc; | |
197 ngx_str_t encoded, decoded; | 198 ngx_str_t encoded, decoded; |
198 ngx_sha1_t sha1; | 199 ngx_sha1_t sha1; |
199 | 200 |
200 /* "{SSHA}" base64(SHA1(key salt) salt) */ | 201 /* "{SSHA}" base64(SHA1(key salt) salt) */ |
201 | 202 |
202 /* decode base64 salt to find out true salt */ | 203 /* decode base64 salt to find out true salt */ |
203 | 204 |
204 encoded.data = salt + sizeof("{SSHA}") - 1; | 205 encoded.data = salt + sizeof("{SSHA}") - 1; |
205 encoded.len = ngx_strlen(encoded.data); | 206 encoded.len = ngx_strlen(encoded.data); |
206 | 207 |
207 decoded.data = ngx_pnalloc(pool, ngx_base64_decoded_length(encoded.len)); | 208 len = ngx_max(ngx_base64_decoded_length(encoded.len), 20); |
209 | |
210 decoded.data = ngx_pnalloc(pool, len); | |
208 if (decoded.data == NULL) { | 211 if (decoded.data == NULL) { |
209 return NGX_ERROR; | 212 return NGX_ERROR; |
210 } | 213 } |
211 | 214 |
212 ngx_decode_base64(&decoded, &encoded); | 215 rc = ngx_decode_base64(&decoded, &encoded); |
216 | |
217 if (rc != NGX_OK || decoded.len < 20) { | |
218 decoded.len = 20; | |
219 } | |
213 | 220 |
214 /* update SHA1 from key and salt */ | 221 /* update SHA1 from key and salt */ |
215 | 222 |
216 ngx_sha1_init(&sha1); | 223 ngx_sha1_init(&sha1); |
217 ngx_sha1_update(&sha1, key, ngx_strlen(key)); | 224 ngx_sha1_update(&sha1, key, ngx_strlen(key)); |