diff -up xclip-11cba613840b0d0e76dc2ea6d4ec7cc5f23daf88/xclip.c.1947285 xclip-11cba613840b0d0e76dc2ea6d4ec7cc5f23daf88/xclip.c --- xclip-11cba613840b0d0e76dc2ea6d4ec7cc5f23daf88/xclip.c.1947285 2020-11-08 09:01:39.000000000 -0500 +++ xclip-11cba613840b0d0e76dc2ea6d4ec7cc5f23daf88/xclip.c 2022-02-22 18:04:44.598444273 -0500 @@ -353,7 +353,7 @@ doOptTarget(void) static int doIn(Window win, const char *progname) { - unsigned char *sel_buf; /* buffer for selection data */ + unsigned char *sel_buf = NULL; /* buffer for selection data */ unsigned long sel_len = 0; /* length of sel_buf */ unsigned long sel_all = 0; /* allocated size of sel_buf */ XEvent evt; /* X Event Structures */ @@ -714,9 +714,9 @@ static int doOut(Window win) { Atom sel_type = None; - unsigned char *sel_buf; /* buffer for selection data */ - unsigned long sel_len = 0; /* length of sel_buf */ - XEvent evt; /* X Event Structures */ + unsigned char *sel_buf = NULL; /* buffer for selection data */ + unsigned long sel_len = 0; /* length of sel_buf */ + XEvent evt; /* X Event Structures */ unsigned int context = XCLIB_XCOUT_NONE; if (sseln == XA_STRING) @@ -743,9 +743,11 @@ doOut(Window win) /* If user requested -sensitive, then prevent further pastes (even though we failed to paste) */ XSetSelectionOwner(dpy, sseln, None, CurrentTime); /* Clear memory buffer */ - xcmemzero(sel_buf,sel_len); + if (sel_buf != NULL) + xcmemzero(sel_buf,sel_len); } - free(sel_buf); + if (sel_buf != NULL) + free(sel_buf); errconvsel(dpy, target, sseln); // errconvsel does not return but exits with EXIT_FAILURE }