]> code.citadel.org Git - citadel.git/blobdiff - citadel/client_chat.c
*** empty log message ***
[citadel.git] / citadel / client_chat.c
index bfe288df83544beb8afe7807851d663159f34484..f54b11f3cedb162a890b30b31f03a8cd8a8f4dcb 100644 (file)
@@ -28,6 +28,9 @@
 #include "routines.h"
 #include "ipc.h"
 #include "citadel_decls.h"
+#include "tools.h"
+
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
 
 void chatmode(void) {
        char wbuf[256];
@@ -158,12 +161,15 @@ RCL:          if (send_complete_line) {
                                        color(2);
                                        }
                                if (strcmp(c_user,last_user)) {
-                                       sprintf(buf,"%s: %s",c_user,c_text);
+                                       snprintf(buf,sizeof buf,"%s: %s",c_user,c_text);
                                        }
                                else {
-                                       sprintf(buf,"%40s","");
-                                       sprintf(&buf[strlen(c_user)+2],
-                                               "%s",c_text);
+                                       size_t i = MIN(sizeof buf - 1,
+                                                      strlen(c_user) + 2);
+
+                                       memset(buf, ' ', i);
+                                       safestrncpy(&buf[i], c_text,
+                                                   sizeof buf - i);
                                        }
                                while (strlen(buf)<79) strcat(buf," ");
                                if (strcmp(c_user,last_user)) {