AnalogTerm2: Clear clipboard selection memory when freeing it.
authorMatthew Mondor <mmondor@pulsar-zone.net>
Mon, 14 Aug 2023 04:25:35 +0000 (04:25 +0000)
committerMatthew Mondor <mmondor@pulsar-zone.net>
Mon, 14 Aug 2023 04:25:35 +0000 (04:25 +0000)
mmsoftware/analogterm2/TODO.txt
mmsoftware/analogterm2/src/screen.c
mmsoftware/analogterm2/src/timer.c

index cad5637..fab1eba 100644 (file)
@@ -56,7 +56,6 @@
 - ☺ and others
 - Character graphics before 🭨
   https://en.wikipedia.org/wiki/Box-drawing_character
-- Overwrite/clear selections before freeing them
 - ≣ † ☆ ツ ⌘›🍺∴ ( ͡° ͜ʖ ͡°)   ƒ   ︵  ₂   😈  θ  ƒ  ›  ʼ  ƒ ∂  ʻ  μ  ›  ∫   ◇ ♪
   ► ə β ə ſ ρ ə ∴ ♪ 😱 † 😳 › ▛ ᵗ * ‽ ℣ Ω  ⌘   ❇ ⸮
 - Verify if dead key support is incomplete for ISO-8859-4 and ISO-8859-10.
index d52dd41..a26cbea 100644 (file)
@@ -804,6 +804,7 @@ screen_select_end(state_t *st, XButtonEvent *bev)
                else
                        st->nselected = 0;
        }
+       (void)memset(buf, 0, bufsize * sizeof(uint32_t));
        free(buf);
 
 done:
@@ -876,6 +877,8 @@ screen_select_clear(state_t *st)
 {
 
        if (st->selected != NULL) {
+               (void)memset(st->selected, 0,
+                   st->nselected * sizeof(uint32_t));
                free(st->selected);
                st->selected = NULL;
                st->nselected = 0;
@@ -959,6 +962,7 @@ send_utf8_string(state_t *st, Display *dpy, XSelectionRequestEvent *sev)
        ssev.time = sev->time;
        XSendEvent(dpy, sev->requestor, True, NoEventMask, (XEvent *)&ssev);
 
+       (void)memset(bytes, '\0', st->nselected * UTF8_MAX_BYTES);
        free(bytes);
 }
 
@@ -990,6 +994,7 @@ send_string(state_t *st, Display *dpy, XSelectionRequestEvent *sev)
        ssev.time = sev->time;
        XSendEvent(dpy, sev->requestor, True, NoEventMask, (XEvent *)&ssev);
 
+       (void)memset(string, '\0', st->nselected);
        free(string);
 }
 
index 047e1be..d417048 100644 (file)
@@ -68,7 +68,7 @@ timer_init(state_t *st)
 /*
  * General timer, used to refresh the display, toggle the exported
  * draw_*_blink_state, decrease tick timers, etc.
- * XXX Maybe move to timer.c or main.c
+ * Called at <cfg_refreshspeed> frequency in microseconds, typically 30Hz.
  */
 static void
 alarm_sighandler(int sig)