char *m is allocated by xstrdup but not free() before return, will cause a memory leak. Signed-off-by: Wu Guanghao <wuguanghao3@xxxxxxxxxx> --- util.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/util.c b/util.c index cc94f96e..46b04afb 100644 --- a/util.c +++ b/util.c @@ -427,8 +427,11 @@ int parse_layout_faulty(char *layout) int ln = strcspn(layout, "0123456789"); char *m = xstrdup(layout); int mode; + m[ln] = 0; mode = map_name(faultylayout, m); + free(m); + if (mode == UnSet) return -1; -- 2.27.0