Regression tests for usr.sbin/zic and lib/libc/stdtime

Steven Kreuzer skreuzer at exit2shell.com
Wed Apr 2 06:54:54 PDT 2008


On Wed, Apr 02, 2008 at 10:54:08PM +1100, Edwin Groothuis wrote:
> Greetings,
> 
> I have make an attempt to upgrade the code in usr.sbin/zic and
> lib/libc/stdtime from tzcode2004 to tzcode2008a. So far so good: I
> have been able to apply most of the patches, it compiles and when
> I rebooted the machine it came back and all applications started
> up... Note that this is a 32 bit machine and that the interesting
> stuff is happening on 64 bitters.
> 
> I would like to know if somebody has ever thought about what kind
> of regression tests I can make to be sure that it all works as
> expected once (if ever) this patch-set gets applied.
> 
> Edwin

Hey Edwin-

If you would like some help with the testing, please let me know. I have
actually been going through the codebase and started replace sprintf
with snprintf.

I have a patch for zic. Perhaps this can also be included in the modifications
you are currently working on?

--
Steven Kreuzer
http://www.exit2shell.com/~skreuzer
-------------- next part --------------
Index: zic.c
===================================================================
RCS file: /usr/share/cvs/freebsd/src/usr.sbin/zic/zic.c,v
retrieving revision 1.18
diff -u -r1.18 zic.c
--- zic.c	3 Dec 2007 10:45:44 -0000	1.18
+++ zic.c	25 Mar 2008 22:27:15 -0000
@@ -959,7 +959,7 @@
 	}
 	if (strcmp(fields[ZF_NAME], TZDEFAULT) == 0 && lcltime != NULL) {
 		buf = erealloc(buf, (int) (132 + strlen(TZDEFAULT)));
-		(void) sprintf(buf,
+		(void) snprintf(buf, sizeof(buf),
 _("\"Zone %s\" line and -l option are mutually exclusive"),
 			TZDEFAULT);
 		error(buf);
@@ -967,7 +967,7 @@
 	}
 	if (strcmp(fields[ZF_NAME], TZDEFRULES) == 0 && psxrules != NULL) {
 		buf = erealloc(buf, (int) (132 + strlen(TZDEFRULES)));
-		(void) sprintf(buf,
+		(void) snprintf(buf, sizeof(buf),
 _("\"Zone %s\" line and -p option are mutually exclusive"),
 			TZDEFRULES);
 		error(buf);
@@ -979,7 +979,7 @@
 				buf = erealloc(buf, (int) (132 +
 					strlen(fields[ZF_NAME]) +
 					strlen(zones[i].z_filename)));
-				(void) sprintf(buf,
+				(void) snprintf(buf, sizeof(buf),
 _("duplicate zone name %s (file \"%s\", line %d)"),
 					fields[ZF_NAME],
 					zones[i].z_filename,
@@ -1451,7 +1451,7 @@
 	}
 	fullname = erealloc(fullname,
 		(int) (strlen(directory) + 1 + strlen(name) + 1));
-	(void) sprintf(fullname, "%s/%s", directory, name);
+	(void) snprintf(fullname, sizeof(filename), "%s/%s", directory, name);
 
 	/*
 	 * Remove old file, if any, to snap links.
@@ -1546,7 +1546,7 @@
 	if (strchr(format, '/') == NULL) {
 		if (letters == NULL)
 			(void) strcpy(abbr, format);
-		else	(void) sprintf(abbr, format, letters);
+		else	(void) snprintf(abbr, sizeof(abbr), format, letters);
 	} else if (isdst)
 		(void) strcpy(abbr, strchr(format, '/') + 1);
 	else {
@@ -1887,7 +1887,7 @@
 	if (type == NULL || *type == '\0')
 		return TRUE;
 	buf = erealloc(buf, (int) (132 + strlen(yitcommand) + strlen(type)));
-	(void) sprintf(buf, "%s %d %s", yitcommand, year, type);
+	(void) snprintf(buf, sizeof(buf), "%s %d %s", yitcommand, year, type);
 	result = system(buf);
 	if (WIFEXITED(result)) switch (WEXITSTATUS(result)) {
 		case 0:


More information about the freebsd-hackers mailing list