[hackers] [dmenu] tab-complete: figure out the size before copying || NRK

From: <git_AT_suckless.org>
Date: Fri, 2 Sep 2022 13:01:13 +0200 (CEST)

commit 528d39b011afb7ef6fd794ba6b74155d4e69bc68
Author: NRK <nrk_AT_disroot.org>
AuthorDate: Thu Sep 1 23:51:43 2022 +0600
Commit: Hiltjo Posthuma <hiltjo_AT_codemadness.org>
CommitDate: Fri Sep 2 13:00:48 2022 +0200

    tab-complete: figure out the size before copying
    
    we already need to know the string length since `cursor` needs to be
    adjusted.
    
    so just calculate the length beforehand and use `memcpy` to copy exactly
    as much as needed (as opposed to `strncpy` which always writes `n`
    bytes).

diff --git a/dmenu.c b/dmenu.c
index 969f6d8..6b285df 100644
--- a/dmenu.c
+++ b/dmenu.c
_AT_@ -517,9 +517,9 @@ insert:
         case XK_Tab:
                 if (!sel)
                         return;
- strncpy(text, sel->text, sizeof text - 1);
+ cursor = strnlen(sel->text, sizeof text - 1);
+ memcpy(text, sel->text, cursor);
                 text[sizeof text - 1] = '\0';
- cursor = strlen(text);
                 match();
                 break;
         }
Received on Fri Sep 02 2022 - 13:01:13 CEST

This archive was generated by hypermail 2.3.0 : Fri Sep 02 2022 - 13:12:35 CEST