Module Name:    src
Committed By:   christos
Date:           Sat Oct 19 17:09:38 UTC 2013

Modified Files:
        src/usr.sbin/isdn/isdntrace: trace.c

Log Message:
using sizeof(char *) to compute the size of a buffer is not going to work
very well.


To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/usr.sbin/isdn/isdntrace/trace.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.sbin/isdn/isdntrace/trace.c
diff -u src/usr.sbin/isdn/isdntrace/trace.c:1.13 src/usr.sbin/isdn/isdntrace/trace.c:1.14
--- src/usr.sbin/isdn/isdntrace/trace.c:1.13	Wed Aug 31 12:24:59 2011
+++ src/usr.sbin/isdn/isdntrace/trace.c	Sat Oct 19 13:09:38 2013
@@ -35,7 +35,7 @@
  *	trace.c - print traces of D (B) channel activity for isdn4bsd
  *	-------------------------------------------------------------
  *
- *	$Id: trace.c,v 1.13 2011/08/31 16:24:59 plunky Exp $ 
+ *	$Id: trace.c,v 1.14 2013/10/19 17:09:38 christos Exp $ 
  *
  * $FreeBSD$
  *
@@ -80,7 +80,7 @@ static int switch_driver( int value, int
 __dead static void usage( void );
 static void exit_hdl( void );
 static void reopenfiles( int );
-void add_datetime(char *filename, char *rfilename);
+void add_datetime(const char *filename, char *rfilename, size_t);
 char * fmt_hdr(struct i4b_trace_hdr *hdr, int frm_len);
 
 /*---------------------------------------------------------------------------*
@@ -242,7 +242,7 @@ main(int argc, char *argv[])
 			snprintf(BPfilename, sizeof(BPfilename), "%s%d",
 			    BIN_FILE_NAME, unit);
 			
-		add_datetime(BPfilename, rBPfilename);
+		add_datetime(BPfilename, rBPfilename, sizeof(rBPfilename));
 
 		if ((BP = fopen(rBPfilename, "w")) == NULL)
 		{
@@ -321,7 +321,7 @@ main(int argc, char *argv[])
 		else
 			strlcpy(outfilename, outfile, sizeof(outfilename));
 			
-		add_datetime(outfilename, routfilename);
+		add_datetime(outfilename, routfilename, sizeof(routfilename));
 			
 		if ((Fout = fopen(routfilename, "w")) == NULL)
 		{
@@ -777,7 +777,7 @@ reopenfiles(int dummy)
 	{
 		fclose(Fout);
 
-		add_datetime(outfilename, routfilename);
+		add_datetime(outfilename, routfilename, sizeof(routfilename));
 		
 		if ((Fout = fopen(routfilename, "a")) == NULL)
 		{
@@ -806,7 +806,7 @@ reopenfiles(int dummy)
 		
 		fclose(BP);
 
-		add_datetime(BPfilename, rBPfilename);
+		add_datetime(BPfilename, rBPfilename, sizeof(rBPfilename));
 		
 		if ((BP = fopen(rBPfilename, "a")) == NULL)
 		{
@@ -832,19 +832,21 @@ reopenfiles(int dummy)
 }
 
 void
-add_datetime(char *filename, char *rfilename)
+add_datetime(const char *filename, char *rfilename, size_t len)
 {
 	time_t timeb;
-	struct tm *tmp;
 	FILE *fx;
+	int c;
+	struct tm *tmp;
 
 	time(&timeb);
 	tmp = localtime(&timeb);
 	
-	snprintf(rfilename, sizeof(rfilename), "%s-", filename);
+	c = snprintf(rfilename, len, "%s-", filename);
+	if (c < 0)
+		return;
 
-	strftime(rfilename+strlen(rfilename), MAXPATHLEN-strlen(rfilename)-1,
-		"%Y%m%d-%H%M%S", tmp);
+	strftime(rfilename + c, len - c - 1, "%Y%m%d-%H%M%S", tmp);
 		
 	if ((fx = fopen(rfilename, "r")) != NULL)
 	{
@@ -855,10 +857,11 @@ add_datetime(char *filename, char *rfile
 		time(&timeb);
 		tmp = localtime(&timeb);
 	
-		snprintf(rfilename, sizeof(rfilename), "%s-", filename);
+		c = snprintf(rfilename, len, "%s-", filename);
+		if (c < 0)
+			return;
 
-		strftime(rfilename+strlen(rfilename), MAXPATHLEN-strlen(rfilename)-1,
-			"%Y%m%d-%H%M%S", tmp);
+		strftime(rfilename, len - c - 1, "%Y%m%d-%H%M%S", tmp);
 	}
 }
 	

Reply via email to