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: 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