mirror of
https://github.com/nginx/nginx.git
synced 2025-08-05 22:26:15 +08:00
Perl: NULL-terminate argument list.
perl_parse() function expects argv/argc-style argument list, which according to the C standard must be NULL-terminated, that is: argv[argc] == NULL. This change fixes a crash (SIGSEGV) that could happen because of the buffer overrun during perl module initialization. Signed-off-by: Piotr Sikora <piotr@cloudflare.com>
This commit is contained in:
parent
8f0f4c10e9
commit
b3066b16e1
@ -577,7 +577,7 @@ ngx_http_perl_create_interpreter(ngx_conf_t *cf,
|
||||
|
||||
n = (pmcf->modules != NGX_CONF_UNSET_PTR) ? pmcf->modules->nelts * 2 : 0;
|
||||
|
||||
embedding = ngx_palloc(cf->pool, (4 + n) * sizeof(char *));
|
||||
embedding = ngx_palloc(cf->pool, (5 + n) * sizeof(char *));
|
||||
if (embedding == NULL) {
|
||||
goto fail;
|
||||
}
|
||||
@ -595,6 +595,7 @@ ngx_http_perl_create_interpreter(ngx_conf_t *cf,
|
||||
embedding[n++] = "-Mnginx";
|
||||
embedding[n++] = "-e";
|
||||
embedding[n++] = "0";
|
||||
embedding[n] = NULL;
|
||||
|
||||
n = perl_parse(perl, ngx_http_perl_xs_init, n, embedding, NULL);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user