$NetBSD: patch-ae,v 1.3 2011/11/24 13:44:35 joerg 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 #include +#include #include #include #include @@ -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) {