--- /dev/null
+diff -urN gaim-0.81.orig/src/protocols/msn/slp.c gaim-0.81/src/protocols/msn/slp.c
+--- gaim-0.81.orig/src/protocols/msn/slp.c 2004-08-15 18:09:45.273642000 +0200
++++ gaim-0.81/src/protocols/msn/slp.c 2004-08-15 22:17:59.055443008 +0200
+@@ -645,8 +645,12 @@
+ if ((c = strchr(status, '\r')) || (c = strchr(status, '\n')) ||
+ (c = strchr(status, '\0')))
+ {
+- strncpy(temp, status, c - status);
+- temp[c - status] = '\0';
++ size_t offset = c - status;
++ if (offset >= sizeof(temp))
++ offset = sizeof(temp) - 1;
++
++ strncpy(temp, status, offset);
++ temp[offset] = '\0';
+ }
+
+ gaim_debug_error("msn", "Received non-OK result: %s\n", temp);