$NetBSD: patch-ae,v 1.2 2006/08/06 20:49:52 mjl Exp $

--- sserver.cpp.orig	2003-03-07 19:22:13.000000000 +0000
+++ sserver.cpp
@@ -18,6 +18,7 @@ program: sserver version 0.03 by Axel Bu
 
 #include <stdlib.h>
 #include <netdb.h>
+#include <limits.h>
 #include <iostream>
 #include <unistd.h>
 #include <string.h>
@@ -52,7 +53,7 @@ int main(int argc, char * argv[])
 	char a_grabname[256];
 	char a_vpid[20];
 	char a_apid[20];
-	char a_filename[256];
+	char a_filename[PATH_MAX];
 	char a_path[256]="";
 	char a_host[256];
 	int	i,n;
@@ -169,10 +170,10 @@ int main(int argc, char * argv[])
 						sprintf(a_vpid,"0x%03x",recdata.vpid);	
 						sprintf(a_apid,"0x%03x",recdata.apid);
 
-						strcpy (a_filename,a_path);
+						strlcpy (a_filename,a_path, sizeof(a_filename));
 							
 						if (strlen(a_filename)) {
-							strcat(a_filename,"/");
+							strlcat(a_filename, "/", sizeof(a_filename));
 						}
 
 						if (strlen(recdata.channelname) > 0)
@@ -185,8 +186,8 @@ int main(int argc, char * argv[])
 								}
 							} while (*p_act);
 								
-							strcat(a_filename, recdata.channelname);
-							strcat(a_filename, "_");
+							strlcat(a_filename, recdata.channelname, sizeof(a_filename));
+							strlcat(a_filename, "_", sizeof(a_filename));
 						}
 
 						if (strlen(recdata.epgtitle) > 0)
@@ -206,13 +207,13 @@ int main(int argc, char * argv[])
 								}
 							} while (*p_act++);
 							
-							strcat(a_filename, recdata.epgtitle);
-							strcat(a_filename, "_");
+							strlcat(a_filename, recdata.epgtitle, sizeof(a_filename));
+							strlcat(a_filename, "_", sizeof(a_filename));
 						}
 
 						t = time (&t);
-						strftime (buf, sizeof(a_filename)-1, "%Y%m%d_%H%M%S", localtime(&t));
-						strcat(a_filename, buf);
+						strftime (buf, 20, "%Y%m%d_%H%M%S", localtime(&t));
+						strlcat(a_filename, buf, sizeof(a_filename));
 
 						pid = fork();
 						if (pid == -1) {
