diff --git a/cde/lib/DtSvc/DtUtil1/DtsMM.c b/cde/lib/DtSvc/DtUtil1/DtsMM.c
index dd82d6f..c7e7a63 100644
--- a/cde/lib/DtSvc/DtUtil1/DtsMM.c
+++ b/cde/lib/DtSvc/DtUtil1/DtsMM.c
@@ -566,12 +566,11 @@ _DtDtsMMCacheName(int override)
 	/* are on different file systems.  Use tmpnam(3) to create the */
 	/* unique file name instead. */
 		char tmpnam_buf[L_tmpnam + 1];
+		size_t buflen = strlen(_DTDTSMMTEMPDIR) + strlen(_DTDTSMMTEMPFILE) + L_tmpnam + 3;
 
-		results = (char *)malloc(sizeof(_DTDTSMMTEMPDIR) +
-					 sizeof(_DTDTSMMTEMPFILE) +
-					 L_tmpnam + 3);
+		results = (char *)malloc(buflen);
 		tmpnam(tmpnam_buf);
-		sprintf(results, "%s/%s%s", _DTDTSMMTEMPDIR, _DTDTSMMTEMPFILE,
+		snprintf(results, buflen, "%s/%s%s", _DTDTSMMTEMPDIR, _DTDTSMMTEMPFILE,
 			basename(tmpnam_buf));
 	}
 	return(results);
