# HG changeset patch # User Igor Sysoev # Date 1166532019 0 # Node ID 1ce231663322d09a1770450a6f55d11912450570 # Parent 1b8111df8051cc4b1dc56e009fedf7bb685c360b ngx_sprintf() has implicit limit of 65536 bytes so on Linux/ppc64 in 32-bit mode the errstr is somewhere at 0xffffd680, the "last" overflows and ngx_vsnprintf() does not print at all diff --git a/src/core/ngx_log.c b/src/core/ngx_log.c --- a/src/core/ngx_log.c +++ b/src/core/ngx_log.c @@ -92,13 +92,14 @@ ngx_log_error_core(ngx_uint_t level, ngx p = errstr + ngx_cached_err_log_time.len; - p = ngx_sprintf(p, " [%s] ", err_levels[level]); + p = ngx_snprintf(p, last - p, " [%s] ", err_levels[level]); /* pid#tid */ - p = ngx_sprintf(p, "%P#" NGX_TID_T_FMT ": ", ngx_log_pid, ngx_log_tid); + p = ngx_snprintf(p, last - p, "%P#" NGX_TID_T_FMT ": ", + ngx_log_pid, ngx_log_tid); if (log->connection) { - p = ngx_sprintf(p, "*%uA ", log->connection); + p = ngx_snprintf(p, last - p, "*%uA ", log->connection); } #if (NGX_HAVE_VARIADIC_MACROS)