Mercurial > hg > nginx-vendor-0-7
comparison src/http/modules/ngx_http_xslt_filter_module.c @ 500:ed3d382670c7 NGINX_0_7_62
nginx 0.7.62
*) Security: a segmentation fault might occur in worker process while
specially crafted request handling.
Thanks to Chris Ries.
*) Feature: the $upstream_cache_status variable.
*) Bugfix: an expired cached response might stick in the "UPDATING"
state.
*) Bugfix: a segmentation fault might occur in worker process, if
error_log was set to info or debug level.
Thanks to Sergey Bochenkov.
*) Bugfix: in handling FastCGI headers split in records.
*) Bugfix: XSLT filter may fail with message "not well formed XML
document" for valid XML document.
Thanks to Kuramoto Eiji.
*) Bugfix: now in MacOSX, Cygwin, and nginx/Windows locations given by
a regular expression are always tested in case insensitive mode.
*) Bugfix: now nginx/Windows ignores trailing dots in URI.
Thanks to Hugo Leisink.
*) Bugfix: name of file specified in --conf-path was not honored during
installation; the bug had appeared in 0.6.6.
Thanks to Maxim Dounin.
*) Bugfix: a 500 error code was returned for invalid login/password
while HTTP Basic authentication on Windows.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Mon, 14 Sep 2009 00:00:00 +0400 |
parents | 116d5de7cbb6 |
children | 89dc5654117c |
comparison
equal
deleted
inserted
replaced
499:f2c782e5161f | 500:ed3d382670c7 |
---|---|
192 NULL, /* init master */ | 192 NULL, /* init master */ |
193 NULL, /* init module */ | 193 NULL, /* init module */ |
194 NULL, /* init process */ | 194 NULL, /* init process */ |
195 NULL, /* init thread */ | 195 NULL, /* init thread */ |
196 NULL, /* exit thread */ | 196 NULL, /* exit thread */ |
197 ngx_http_xslt_filter_exit, /* exit process */ | 197 ngx_http_xslt_filter_exit, /* exit process */ |
198 ngx_http_xslt_filter_exit, /* exit master */ | 198 ngx_http_xslt_filter_exit, /* exit master */ |
199 NGX_MODULE_V1_PADDING | 199 NGX_MODULE_V1_PADDING |
200 }; | 200 }; |
201 | 201 |
202 | 202 |
245 | 245 |
246 | 246 |
247 static ngx_int_t | 247 static ngx_int_t |
248 ngx_http_xslt_body_filter(ngx_http_request_t *r, ngx_chain_t *in) | 248 ngx_http_xslt_body_filter(ngx_http_request_t *r, ngx_chain_t *in) |
249 { | 249 { |
250 int wellFormed; | |
250 ngx_chain_t *cl; | 251 ngx_chain_t *cl; |
251 ngx_http_xslt_filter_ctx_t *ctx; | 252 ngx_http_xslt_filter_ctx_t *ctx; |
252 | 253 |
253 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, | 254 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, |
254 "xslt filter body"); | 255 "xslt filter body"); |
286 | 287 |
287 #if (NGX_HTTP_XSLT_REUSE_DTD) | 288 #if (NGX_HTTP_XSLT_REUSE_DTD) |
288 ctx->doc->extSubset = NULL; | 289 ctx->doc->extSubset = NULL; |
289 #endif | 290 #endif |
290 | 291 |
292 wellFormed = ctx->ctxt->wellFormed; | |
293 | |
291 xmlFreeParserCtxt(ctx->ctxt); | 294 xmlFreeParserCtxt(ctx->ctxt); |
292 | 295 |
293 if (ctx->ctxt->wellFormed) { | 296 if (wellFormed) { |
294 return ngx_http_xslt_send(r, ctx, | 297 return ngx_http_xslt_send(r, ctx, |
295 ngx_http_xslt_apply_stylesheet(r, ctx)); | 298 ngx_http_xslt_apply_stylesheet(r, ctx)); |
296 } | 299 } |
297 | 300 |
298 xmlFreeDoc(ctx->doc); | 301 xmlFreeDoc(ctx->doc); |
715 va_end(args); | 718 va_end(args); |
716 | 719 |
717 while (--n && (buf[n] == CR || buf[n] == LF)) { /* void */ } | 720 while (--n && (buf[n] == CR || buf[n] == LF)) { /* void */ } |
718 | 721 |
719 ngx_log_error(NGX_LOG_ERR, ctx->request->connection->log, 0, | 722 ngx_log_error(NGX_LOG_ERR, ctx->request->connection->log, 0, |
720 "libxml2 error: \"%*s\"", n, buf); | 723 "libxml2 error: \"%*s\"", n + 1, buf); |
721 } | 724 } |
722 | 725 |
723 | 726 |
724 static ngx_buf_t * | 727 static ngx_buf_t * |
725 ngx_http_xslt_apply_stylesheet(ngx_http_request_t *r, | 728 ngx_http_xslt_apply_stylesheet(ngx_http_request_t *r, |