diff -ur bc-stage/usr/src/cmd/abi/spectrans/parser/extends.c bc/usr/src/cmd/abi/spectrans/parser/extends.c
--- bc-stage/usr/src/cmd/abi/spectrans/parser/extends.c	Sat Jul 16 23:31:23 2005
+++ bc/usr/src/cmd/abi/spectrans/parser/extends.c	Sat Jul 16 23:18:54 2005
@@ -38,6 +38,15 @@
 static int find_fun(char *key, char *value, char *parentfun);
 
 /*
+ * Macros to produce a quoted string containing the value of a
+ * preprocessor macro. For example, if SIZE is defined to be 256,
+ * VAL2STR(SIZE) is "256". This is used to construct format
+ * strings for scanf-family functions below.
+ */
+#define QUOTE(x)	#x
+#define VAL2STR(x)	QUOTE(x)
+
+/*
  * handles the extends clause of the 'function' keyword
  * Returns the number of errors encountered
  * This function is recursive.
@@ -65,7 +74,9 @@
 		goto ret;
 	}
 
-	scan = sscanf(value, "%s %s %s %s", funname, buf, filename, parentfun);
+	scan = sscanf(value, "%" VAL2STR(BUFSIZ) "s %" VAL2STR(BUFSIZ) "s "
+	    "%" VAL2STR(MAXPATHLEN) "s %" VAL2STR(BUFSIZ) "s", funname, buf,
+	    filename, parentfun);
 	switch (scan) {
 	case 0: /* funname not set */
 	case 1: /* buf not set, though ignored */
diff -ur bc-stage/usr/src/cmd/abi/spectrans/spec2map/xlator.c bc/usr/src/cmd/abi/spectrans/spec2map/xlator.c
--- bc-stage/usr/src/cmd/abi/spectrans/spec2map/xlator.c	Sat Jul 16 23:31:23 2005
+++ bc/usr/src/cmd/abi/spectrans/spec2map/xlator.c	Sat Jul 16 23:19:30 2005
@@ -98,6 +98,15 @@
 static int set_supported_arch(const char *);
 
 /*
+ * Macros to produce a quoted string containing the value of a
+ * preprocessor macro. For example, if SIZE is defined to be 256,
+ * VAL2STR(SIZE) is "256". This is used to construct format
+ * strings for scanf-family functions below.
+ */
+#define QUOTE(x)	#x
+#define VAL2STR(x)	QUOTE(x)
+
+/*
  * xlator_init()
  *    back-end initialization
  *    returns pointer to Keywords on success
@@ -230,7 +239,7 @@
 		return (XLATOR_NONFATAL);
 	}
 
-	err = sscanf(value, "%s", rhs);
+	err = sscanf(value, "%" VAL2STR(BUFSIZ) "s", rhs);
 	if (err == 0 || err == EOF) {
 		errlog(INPUT|ERROR,
 		    "Error: Missing argument in \"%s\" line", kw);
diff -ur bc-stage/usr/src/cmd/abi/spectrans/spec2trace/printfuncs.c bc/usr/src/cmd/abi/spectrans/spec2trace/printfuncs.c
--- bc-stage/usr/src/cmd/abi/spectrans/spec2trace/printfuncs.c	Sat Jul 16 13:37:59 2005
+++ bc/usr/src/cmd/abi/spectrans/spec2trace/printfuncs.c	Sat Jul 16 23:24:40 2005
@@ -145,11 +145,11 @@
 void
 generate_printfunc_calls(ENTRY *f)
 {
-	ENTRY	*e;
-	char	*name;
-	char	*pf_str_name;
-	int	li;
-	char	*format;
+	ENTRY		*e;
+	char		*name;
+	char		*pf_str_name;
+	int		li;
+	const char	*format;
 
 	errlog(BEGIN, "generate_printfunc_calls() {");
 	for (e = symtab_get_first_arg(); e != NULL; e = symtab_get_next_arg()) {
diff -ur bc-stage/usr/src/cmd/abi/spectrans/spec2trace/trace.c bc/usr/src/cmd/abi/spectrans/spec2trace/trace.c
--- bc-stage/usr/src/cmd/abi/spectrans/spec2trace/trace.c	Sat Jul 16 23:31:23 2005
+++ bc/usr/src/cmd/abi/spectrans/spec2trace/trace.c	Sat Jul 16 23:34:51 2005
@@ -774,9 +774,9 @@
 	}
 
 	decl_GetTraceInfo(pp, f_type, f_basetype, &funargs);
-	(void) sprintf(buf, "%s", strnormalize(f_type));
+	(void) snprintf(buf, BUFSIZ, "%s", strnormalize(f_type));
 	(void) strcpy(f_type, buf);
-	(void) sprintf(buf, "%s", strnormalize(f_basetype));
+	(void) snprintf(buf, BUFSIZ, "%s", strnormalize(f_basetype));
 	(void) strcpy(f_basetype, buf);
 	levels = to_basetype(f_basetype);
 
