[nginx] setting variable cause core when used by lua

洪志道 hongzhidao at gmail.com
Thu Feb 16 07:47:27 UTC 2017


Hi.

diff -r da46bfc484ef src/http/ngx_http_variables.c
--- a/src/http/ngx_http_variables.c Mon Feb 13 21:45:01 2017 +0300
+++ b/src/http/ngx_http_variables.c Wed Feb 08 10:31:53 2017 +0800
@@ -783,6 +783,10 @@
     ssize_t    s, *sp;
     ngx_str_t  val;

+    if (v->data == NULL) {
+        return;
+    }
+
     val.len = v->len;
     val.data = v->data;


The following will cause core file, I think it's better to deal with in
nginx.

server {
    listen  8000;

    location / {
        content_by_lua_block {
            ngx.var.limit_rate = size;  # size is undefined.
            ngx.say('hello lua');
        }
    }


============== set handler in lua-module ============
         if (value_type == LUA_TNIL) {
                vv->valid = 0;
                vv->not_found = 1;
                vv->no_cacheable = 0;
                vv->data = NULL;
                vv->len = 0;

            } else {
                vv->valid = 1;
                vv->not_found = 0;
                vv->no_cacheable = 0;

                vv->data = val;
                vv->len = len;
            }

            v->set_handler(r, vv, v->data);
===============================================

Thanks.
B.R.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx-devel/attachments/20170216/de4c1aeb/attachment.html>


More information about the nginx-devel mailing list