text-entry: use memcpy instead of strcpy 48/280848/1
authorduna.oh <duna.oh@samsung.com>
Sun, 4 Sep 2022 01:51:48 +0000 (10:51 +0900)
committerTizen Window System <tizen.windowsystem@gmail.com>
Tue, 6 Sep 2022 01:55:54 +0000 (10:55 +0900)
For better security, do not use vulnerable function 'strcpy'

Change-Id: Ib0ac0a253b19df4ce14d0faac233591ecd1d16c4

clients/text-entry.c

index ce21d02..0561e56 100644 (file)
@@ -615,16 +615,22 @@ text_entry_insert_at_cursor(struct text_entry *entry, const char *text,
                            int32_t cursor, int32_t anchor)
 {
        fprintf(stderr, "text_entry_insert_at_cursor()\n");
-       char *new_text = malloc(strlen(entry->text) + strlen(text) + 1);
+       char *new_text;
+       int len_entry_text, len_text;
+
+       len_entry_text = strlen(entry->text);
+       len_text = strlen(text);
+       new_text = malloc(len_entry_text + len_text + 1);
        if (new_text == NULL) {
                fprintf(stderr, "alloc fail");
                return;
        }
 
-       strncpy(new_text, entry->text, entry->cursor);
-       strcpy(new_text + entry->cursor, text);
-       strcpy(new_text + entry->cursor + strlen(text),
-              entry->text + entry->cursor);
+       memcpy(new_text, entry->text, entry->cursor);
+       memcpy(new_text + entry->cursor, text, len_text);
+       memcpy(new_text + entry->cursor + len_text,
+              entry->text + entry->cursor, len_entry_text - entry->cursor);
+       new_text[len_entry_text + len_text] = '\0';
 
        free(entry->text);
        entry->text = new_text;