diff options
Diffstat (limited to 'src/core/ngx_conf_file.c')
| -rw-r--r-- | src/core/ngx_conf_file.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/core/ngx_conf_file.c b/src/core/ngx_conf_file.c index 99af0afbd..28068d4fe 100644 --- a/src/core/ngx_conf_file.c +++ b/src/core/ngx_conf_file.c @@ -435,6 +435,10 @@ char *ngx_conf_set_flag_slot(ngx_conf_t *cf, ngx_command_t *cmd, char *conf) int flag; ngx_str_t *value; + if (*(int *) (conf + cmd->offset) != NGX_CONF_UNSET) { + return "is duplicate"; + } + value = (ngx_str_t *) cf->args->elts; if (ngx_strcasecmp(value[1].data, "on") == 0) { @@ -458,6 +462,11 @@ char *ngx_conf_set_str_slot(ngx_conf_t *cf, ngx_command_t *cmd, char *conf) ngx_str_t *field, *value; field = (ngx_str_t *) (conf + cmd->offset); + + if (field->len > 0) { + return "is duplicate"; + } + value = (ngx_str_t *) cf->args->elts; field->len = value[1].len; @@ -472,6 +481,10 @@ char *ngx_conf_set_num_slot(ngx_conf_t *cf, ngx_command_t *cmd, char *conf) int num, len; ngx_str_t *value; + if (*(int *) (conf + cmd->offset) != NGX_CONF_UNSET) { + return "is duplicate"; + } + value = (ngx_str_t *) cf->args->elts; len = value[1].len; @@ -493,6 +506,10 @@ char *ngx_conf_set_size_slot(ngx_conf_t *cf, ngx_command_t *cmd, char *conf) char last; ngx_str_t *value; + if (*(int *) (conf + cmd->offset) != NGX_CONF_UNSET) { + return "is duplicate"; + } + value = (ngx_str_t *) cf->args->elts; len = value[1].len; @@ -535,6 +552,10 @@ char *ngx_conf_set_msec_slot(ngx_conf_t *cf, ngx_command_t *cmd, char *conf) char last, *start; ngx_str_t *value; + if (*(int *) (conf + cmd->offset) != NGX_CONF_UNSET) { + return "is duplicate"; + } + value = (ngx_str_t *) cf->args->elts; start = value[1].data; len = 0; @@ -626,6 +647,10 @@ char *ngx_conf_set_sec_slot(ngx_conf_t *cf, ngx_command_t *cmd, char *conf) char last, *start; ngx_str_t *value; + if (*(int *) (conf + cmd->offset) != NGX_CONF_UNSET) { + return "is duplicate"; + } + value = (ngx_str_t *) cf->args->elts; start = value[1].data; len = 0; |
