mirror of
				https://github.com/openresty/openresty.git
				synced 2024-10-13 00:29:41 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
--- nginx-1.4.2/src/event/ngx_event_accept.c	2013-05-06 03:26:50.000000000 -0700
 | 
						|
+++ nginx-1.4.2-patched/src/event/ngx_event_accept.c	2013-07-10 13:05:02.001249099 -0700
 | 
						|
@@ -269,17 +269,28 @@ ngx_event_accept(ngx_event_t *ev)
 | 
						|
 #endif
 | 
						|
 
 | 
						|
         if (ls->addr_ntop) {
 | 
						|
-            c->addr_text.data = ngx_pnalloc(c->pool, ls->addr_text_max_len);
 | 
						|
-            if (c->addr_text.data == NULL) {
 | 
						|
-                ngx_close_accepted_connection(c);
 | 
						|
-                return;
 | 
						|
-            }
 | 
						|
+            if (socklen > sizeof(c->sockaddr->sa_family)) {
 | 
						|
+                c->addr_text.data = ngx_pnalloc(c->pool, ls->addr_text_max_len);
 | 
						|
+                if (c->addr_text.data == NULL) {
 | 
						|
+                    ngx_close_accepted_connection(c);
 | 
						|
+                    return;
 | 
						|
+                }
 | 
						|
+
 | 
						|
+                c->addr_text.len = ngx_sock_ntop(c->sockaddr, c->addr_text.data,
 | 
						|
+                                                 ls->addr_text_max_len, 0);
 | 
						|
+                if (c->addr_text.len == 0) {
 | 
						|
+                    ngx_close_accepted_connection(c);
 | 
						|
+                    return;
 | 
						|
+                }
 | 
						|
+
 | 
						|
+            } else {
 | 
						|
+                /*
 | 
						|
+                 * Linux accept/accept4 syscalls, for example, do not return
 | 
						|
+                 * address data upon unix domain sockets
 | 
						|
+                 */
 | 
						|
 
 | 
						|
-            c->addr_text.len = ngx_sock_ntop(c->sockaddr, c->addr_text.data,
 | 
						|
-                                             ls->addr_text_max_len, 0);
 | 
						|
-            if (c->addr_text.len == 0) {
 | 
						|
-                ngx_close_accepted_connection(c);
 | 
						|
-                return;
 | 
						|
+                c->addr_text.data = NULL;
 | 
						|
+                c->addr_text.len = 0;
 | 
						|
             }
 | 
						|
         }
 | 
						|
 
 |