]> git.kaiwu.me - nginx.git/commitdiff
ngx_sprintf() has implicit limit of 65536 bytes so on Linux/ppc64
authorIgor Sysoev <igor@sysoev.ru>
Tue, 19 Dec 2006 12:40:19 +0000 (12:40 +0000)
committerIgor Sysoev <igor@sysoev.ru>
Tue, 19 Dec 2006 12:40:19 +0000 (12:40 +0000)
in 32-bit mode the errstr is somewhere at 0xffffd680, the "last" overflows
and ngx_vsnprintf() does not print at all

src/core/ngx_log.c

index ea4e7f2f4df134ef0e97d0dc6184bdb93ca8b2d0..175190ce2a6215df99cb1352a2aa5d7760c05195 100644 (file)
@@ -92,13 +92,14 @@ ngx_log_error_core(ngx_uint_t level, ngx_log_t *log, ngx_err_t err,
 
     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)