[nginx] svn commit: r4690 - trunk/src/core

mdounin at mdounin.ru mdounin at mdounin.ru
Mon Jun 18 14:06:01 UTC 2012


Author: mdounin
Date: 2012-06-18 14:06:00 +0000 (Mon, 18 Jun 2012)
New Revision: 4690
URL: http://trac.nginx.org/nginx/changeset/4690/nginx

Log:
Fixed handling of conflicting wildcard server names.

With previous code wildcard names were added to hash even if conflict
was detected.  This resulted in identical names in hash and segfault
later in ngx_hash_wildcard_init().


Modified:
   trunk/src/core/ngx_hash.c

Modified: trunk/src/core/ngx_hash.c
===================================================================
--- trunk/src/core/ngx_hash.c	2012-06-18 14:02:20 UTC (rev 4689)
+++ trunk/src/core/ngx_hash.c	2012-06-18 14:06:00 UTC (rev 4690)
@@ -924,17 +924,6 @@
     }
 
 
-    hk = ngx_array_push(hwc);
-    if (hk == NULL) {
-        return NGX_ERROR;
-    }
-
-    hk->key.len = last - 1;
-    hk->key.data = p;
-    hk->key_hash = 0;
-    hk->value = value;
-
-
     /* check conflicts in wildcard hash */
 
     name = keys->elts;
@@ -972,5 +961,18 @@
 
     ngx_memcpy(name->data, key->data + skip, name->len);
 
+
+    /* add to wildcard hash */
+
+    hk = ngx_array_push(hwc);
+    if (hk == NULL) {
+        return NGX_ERROR;
+    }
+
+    hk->key.len = last - 1;
+    hk->key.data = p;
+    hk->key_hash = 0;
+    hk->value = value;
+
     return NGX_OK;
 }



More information about the nginx-devel mailing list