diff options
Diffstat (limited to 'apps')
-rw-r--r-- | apps/xwininfo/dsimple.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/apps/xwininfo/dsimple.c b/apps/xwininfo/dsimple.c index 36ee5c29a..63260661c 100644 --- a/apps/xwininfo/dsimple.c +++ b/apps/xwininfo/dsimple.c @@ -254,7 +254,8 @@ recursive_Window_With_Name ( xcb_connection_t *dpy, xcb_window_t window, struct wininfo_cookies *cookies, - const char *name) + const char *name, + size_t namelen) { xcb_window_t *children; unsigned int nchildren; @@ -274,7 +275,8 @@ recursive_Window_With_Name ( int prop_name_len = xcb_get_property_value_length (prop); /* can't use strcmp, since prop.name is not null terminated */ - if (strncmp (prop_name, name, prop_name_len) == 0) { + if ((namelen == prop_name_len) && + memcmp (prop_name, name, namelen) == 0) { w = window; } } @@ -295,7 +297,8 @@ recursive_Window_With_Name ( if (xcb_get_wm_name_reply (dpy, cookies->get_wm_name, &nameprop, &err)) { /* can't use strcmp, since nameprop.name is not null terminated */ - if (strncmp (nameprop.name, name, nameprop.name_len) == 0) { + if ((namelen == nameprop.name_len) && + memcmp (nameprop.name, name, namelen) == 0) { w = window; } @@ -310,7 +313,8 @@ recursive_Window_With_Name ( int prop_name_len = xcb_get_property_value_length (prop); /* can't use strcmp, since prop.name is not null terminated */ - if (strncmp (prop_name, name, prop_name_len) == 0) { + if ((namelen == prop_name_len) && + memcmp (prop_name, name, namelen) == 0) { w = window; } } @@ -355,7 +359,7 @@ recursive_Window_With_Name ( for (i = 0; i < nchildren; i++) { w = recursive_Window_With_Name (dpy, children[i], - &child_cookies[i], name); + &child_cookies[i], name, namelen); if (w) break; } @@ -393,7 +397,7 @@ Window_With_Name ( cookies.get_wm_name = xcb_get_wm_name (dpy, top); cookies.query_tree = xcb_query_tree (dpy, top); xcb_flush (dpy); - return recursive_Window_With_Name(dpy, top, &cookies, name); + return recursive_Window_With_Name(dpy, top, &cookies, name, strlen(name)); } |