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));