--- /dev/null
+--- centericq-4.21.0.orig/libicq2000-0.1/src/DirectClient.cpp
++++ centericq-4.21.0/libicq2000-0.1/src/DirectClient.cpp
+@@ -162,6 +162,7 @@
+
+ m_recv.setLittleEndian();
+ m_recv >> length;
++ if (length == 0) return; // short read, toss it back (nothing to do)
+ if (length > Incoming_Packet_Limit) throw ParseException("Received too long incoming packet");
+ if (m_recv.remains() < length) return; // waiting for more of the packet
+
--- /dev/null
+--- centericq-4.21.0.orig/src/icqface.cc
++++ centericq-4.21.0/src/icqface.cc
+@@ -2003,7 +2003,7 @@
+ mvaddchnstr(i-1, sizeWArea.x1+1, logline, sizeWArea.x2-sizeWArea.x1);
+ }
+
+- delete logline;
++ delete[] logline;
+
+ if(text.size() > sizeWArea.x2-sizeWArea.x1-2) text.resize(sizeWArea.x2-sizeWArea.x1-2);
+ mvhline(LINES-3, sizeWArea.x1+2, ' ', sizeWArea.x2-sizeWArea.x1-2);
+only in patch2:
+unchanged:
+--- centericq-4.21.0.orig/kkstrtext-0.1/kkstrtext.cc
++++ centericq-4.21.0/kkstrtext-0.1/kkstrtext.cc
+@@ -907,8 +907,8 @@
+ r += soutbuf;
+ text.erase(0, text.size()-inleft);
+
+- delete soutbuf;
+- delete sinbuf;
++ delete[] soutbuf;
++ free(sinbuf);
+
+ if(res == -1 && errno != EILSEQ)
+ break;