On Tue, Jul 11, 2023 at 07:53:43PM +0800, Li Zhijian wrote:
> According to the tool's documentation, when '-l standard' is specified,
> log would be output to the stdout. But since it's using strncmp(a, b, 10)
> to compare the former 10 characters, it will also wrongly detect a filename
> starting with a substring 'standard' as stdout.
> 
> For example:
> $ cxl monitor -l standard.log
> 
> User is most likely want to save log to ./standard.log instead of stdout.

Reviewed-by: Alison Schofield <[email protected]>

> 
> Reviewed-by: Dave Jiang <[email protected]>
> Signed-off-by: Li Zhijian <[email protected]>
> ---
> V4: combine ndctl/monitor to one patch
> V3: Improve commit log # Dave
> V2: commit log updated # Dave
> Signed-off-by: Li Zhijian <[email protected]>
> ---
>  cxl/monitor.c   | 2 +-
>  ndctl/monitor.c | 4 ++--
>  2 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/cxl/monitor.c b/cxl/monitor.c
> index e83455b63d35..a85452a4dc82 100644
> --- a/cxl/monitor.c
> +++ b/cxl/monitor.c
> @@ -188,7 +188,7 @@ int cmd_monitor(int argc, const char **argv, struct 
> cxl_ctx *ctx)
>       else
>               monitor.ctx.log_priority = LOG_INFO;
>  
> -     if (strncmp(log, "./standard", 10) == 0)
> +     if (strcmp(log, "./standard") == 0)
>               monitor.ctx.log_fn = log_standard;
>       else {
>               monitor.ctx.log_file = fopen(log, "a+");
> diff --git a/ndctl/monitor.c b/ndctl/monitor.c
> index 89903def63d4..bd8a74863476 100644
> --- a/ndctl/monitor.c
> +++ b/ndctl/monitor.c
> @@ -610,9 +610,9 @@ int cmd_monitor(int argc, const char **argv, struct 
> ndctl_ctx *ctx)
>       if (monitor.log) {
>               if (strncmp(monitor.log, "./", 2) != 0)
>                       fix_filename(prefix, (const char **)&monitor.log);
> -             if (strncmp(monitor.log, "./syslog", 8) == 0)
> +             if (strcmp(monitor.log, "./syslog") == 0)
>                       monitor.ctx.log_fn = log_syslog;
> -             else if (strncmp(monitor.log, "./standard", 10) == 0)
> +             else if (strcmp(monitor.log, "./standard") == 0)
>                       monitor.ctx.log_fn = log_standard;
>               else {
>                       monitor.ctx.log_file = fopen(monitor.log, "a+");
> -- 
> 2.29.2
> 

Reply via email to