[nginx] enhance options
Maxim Dounin
mdounin at mdounin.ru
Mon Feb 5 15:27:08 UTC 2018
Hello!
On Sun, Feb 04, 2018 at 08:49:12PM +0800, 洪志道 wrote:
> Hi!
>
> Maybe it's better to keep the options more complete, and consider the
> follow operation as a mistake.
>
> /usr/local/nginx/sbin/nginx -
>
> hg diff
> diff -r cbf59d483c9c src/core/nginx.c
> --- a/src/core/nginx.c Tue Jan 16 13:52:03 2018 +0300
> +++ b/src/core/nginx.c Sun Feb 04 07:41:36 2018 -0500
> @@ -753,7 +753,12 @@
> return NGX_ERROR;
> }
>
> - while (*p) {
> + do {
> +
> + if (*p == '\0') {
> + ngx_log_stderr(0, "missing option: \"%s\"", argv[i]);
> + return NGX_ERROR;
> + }
>
> switch (*p++) {
>
> @@ -855,7 +860,8 @@
> ngx_log_stderr(0, "invalid option: \"%c\"", *(p - 1));
> return NGX_ERROR;
> }
> - }
> +
> + } while (*p);
>
> next:
Checking *p twice on each loop iteration certainly looks
superfluous. Rather, a more logical check would look like:
diff --git a/src/core/nginx.c b/src/core/nginx.c
--- a/src/core/nginx.c
+++ b/src/core/nginx.c
@@ -748,7 +748,7 @@ ngx_get_options(int argc, char *const *a
p = (u_char *) argv[i];
- if (*p++ != '-') {
+ if (*p++ != '-' || *p == '\0') {
ngx_log_stderr(0, "invalid option: \"%s\"", argv[i]);
return NGX_ERROR;
}
Not sure it worth the change though.
--
Maxim Dounin
http://mdounin.ru/
More information about the nginx-devel
mailing list