[PATCH 1/7] Convert a bunch of sprintf to snprintf calls

Alan Coopersmith alan.coopersmith at oracle.com
Tue Nov 1 15:42:16 PDT 2011


This batch is the straightforward set - others are more complex and
need more analysis to determine right size to pass.

Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
---
 exa/exa_render.c                       |    6 +-
 hw/dmx/examples/ev.c                   |    4 +-
 hw/dmx/glxProxy/glxscreens.c           |    5 +-
 hw/kdrive/ephyr/ephyrhostvideo.c       |    9 +-
 hw/kdrive/linux/linux.c                |    2 +-
 hw/vfb/InitOutput.c                    |    3 +-
 hw/xfree86/common/xf86Option.c         |    6 +-
 hw/xfree86/common/xf86sbusBus.c        |    2 +-
 hw/xfree86/fbdevhw/fbdevhw.c           |    6 +-
 hw/xfree86/os-support/bsd/bsd_init.c   |   10 +-
 hw/xfree86/os-support/bus/Sbus.c       |   12 +-
 hw/xfree86/os-support/linux/lnx_init.c |    2 +-
 hw/xfree86/x86emu/debug.c              |    2 +-
 os/connection.c                        |    4 +-
 os/osinit.c                            |    2 +-
 os/rpcauth.c                           |    7 +-
 os/utils.c                             |    4 +-
 os/xdmcp.c                             |    4 +-
 randr/rrinfo.c                         |    2 +-
 xkb/xkbtext.c                          |  158 ++++++++++++++++----------------
 20 files changed, 127 insertions(+), 123 deletions(-)

diff --git a/exa/exa_render.c b/exa/exa_render.c
index 6f2af8a..3974afe 100644
--- a/exa/exa_render.c
+++ b/exa/exa_render.c
@@ -103,13 +103,13 @@ exaPrintCompositeFallback(CARD8 op,
     switch(op)
     {
     case PictOpSrc:
-	sprintf(sop, "Src");
+	snprintf(sop, sizeof(sop), "Src");
 	break;
     case PictOpOver:
-	sprintf(sop, "Over");
+	snprintf(sop, sizeof(sop), "Over");
 	break;
     default:
-	sprintf(sop, "0x%x", (int)op);
+	snprintf(sop, sizeof(sop), "0x%x", (int)op);
 	break;
     }
 
diff --git a/hw/dmx/examples/ev.c b/hw/dmx/examples/ev.c
index ba45c2b..ed23b8a 100644
--- a/hw/dmx/examples/ev.c
+++ b/hw/dmx/examples/ev.c
@@ -60,7 +60,7 @@ int main(int argc, char **argv)
 #define test_bit(bit) (mask[(bit)/8] & (1 << ((bit)%8)))
 
     for (i = 0; i < 32; i++) {
-        sprintf(name, "/dev/input/event%d", i);
+        snprintf(name, sizeof(name), "/dev/input/event%d", i);
         if ((fd = open(name, O_RDONLY, 0)) >= 0) {
             ioctl(fd, EVIOCGVERSION, &version);
             ioctl(fd, EVIOCGNAME(sizeof(buf)), buf);
@@ -92,7 +92,7 @@ int main(int argc, char **argv)
     }
 
     if (argc > 1) {
-        sprintf(name, "/dev/input/event%d", atoi(argv[1]));
+        snprintf(name, sizeof(name), "/dev/input/event%d", atoi(argv[1]));
         if ((fd = open(name, O_RDWR, 0)) >= 0) {
             printf("%s: open, fd = %d\n", name, fd);
             for (i = 0; i < LED_MAX; i++) {
diff --git a/hw/dmx/glxProxy/glxscreens.c b/hw/dmx/glxProxy/glxscreens.c
index 01e041c..baa4a65 100644
--- a/hw/dmx/glxProxy/glxscreens.c
+++ b/hw/dmx/glxProxy/glxscreens.c
@@ -120,8 +120,9 @@ static void CalcServerVersionAndExtensions( void )
       __glXVersionMinor = GLX_SERVER_MINOR_VERSION;
    }
 
-   sprintf(GLXServerVersion, "%d.%d DMX %d back-end server(s)",
-              __glXVersionMajor, __glXVersionMinor, __glXNumActiveScreens );	 
+   snprintf(GLXServerVersion, sizeof(GLXServerVersion),
+             "%d.%d DMX %d back-end server(s)",
+              __glXVersionMajor, __glXVersionMinor, __glXNumActiveScreens );
    /*
     * set the ExtensionsString to the minimum extensions string
     */
diff --git a/hw/kdrive/ephyr/ephyrhostvideo.c b/hw/kdrive/ephyr/ephyrhostvideo.c
index 600b50f..69ad8a5 100644
--- a/hw/kdrive/ephyr/ephyrhostvideo.c
+++ b/hw/kdrive/ephyr/ephyrhostvideo.c
@@ -140,7 +140,7 @@ ephyrHostXVLogXErrorEvent (Display *a_display,
             mesg, BUFSIZ);
     (void) fprintf(a_fp, mesg, a_err_event->request_code);
     if (a_err_event->request_code < 128) {
-        sprintf(number, "%d", a_err_event->request_code);
+        snprintf(number, sizeof(number), "%d", a_err_event->request_code);
         XGetErrorDatabaseText(dpy, "XRequest", number, "", buffer, BUFSIZ);
     } else {
         for (ext = dpy->ext_procs;
@@ -159,7 +159,8 @@ ephyrHostXVLogXErrorEvent (Display *a_display,
         fputs("  ", a_fp);
         (void) fprintf(a_fp, mesg, a_err_event->minor_code);
         if (ext) {
-            sprintf(mesg, "%s.%d", ext->name, a_err_event->minor_code);
+            snprintf(mesg, sizeof(mesg), "%s.%d",
+                     ext->name, a_err_event->minor_code);
             XGetErrorDatabaseText(dpy, "XRequest", mesg, "", buffer, BUFSIZ);
             (void) fprintf(a_fp, " (%s)", buffer);
         }
@@ -182,8 +183,8 @@ ephyrHostXVLogXErrorEvent (Display *a_display,
                 bext = ext;
         }
         if (bext)
-            sprintf(buffer, "%s.%d", bext->name,
-                    a_err_event->error_code - bext->codes.first_error);
+            snprintf(buffer, sizeof(buffer), "%s.%d", bext->name,
+                     a_err_event->error_code - bext->codes.first_error);
         else
             strcpy(buffer, "Value");
         XGetErrorDatabaseText(dpy, mtype, buffer, "", mesg, BUFSIZ);
diff --git a/hw/kdrive/linux/linux.c b/hw/kdrive/linux/linux.c
index a53db49..194e7cd 100644
--- a/hw/kdrive/linux/linux.c
+++ b/hw/kdrive/linux/linux.c
@@ -109,7 +109,7 @@ LinuxInit (void)
 	close(fd);
     }
 
-    sprintf(vtname,"/dev/tty%d",vtno); /* /dev/tty1-64 */
+    snprintf(vtname,sizeof(vtname),"/dev/tty%d",vtno); /* /dev/tty1-64 */
 
     if ((LinuxConsoleFd = open(vtname, O_RDWR|O_NDELAY, 0)) < 0)
     {
diff --git a/hw/vfb/InitOutput.c b/hw/vfb/InitOutput.c
index 1218547..3e5d051 100644
--- a/hw/vfb/InitOutput.c
+++ b/hw/vfb/InitOutput.c
@@ -560,7 +560,8 @@ vfbAllocateMmappedFramebuffer(vfbScreenInfoPtr pvfb)
     char dummyBuffer[DUMMY_BUFFER_SIZE];
     int currentFileSize, writeThisTime;
 
-    sprintf(pvfb->mmap_file, "%s/Xvfb_screen%d", pfbdir, (int) (pvfb - vfbScreens));
+    snprintf(pvfb->mmap_file, sizeof(pvfb->mmap_file), "%s/Xvfb_screen%d",
+	     pfbdir, (int) (pvfb - vfbScreens));
     if (-1 == (pvfb->mmap_fd = open(pvfb->mmap_file, O_CREAT|O_RDWR, 0666)))
     {
 	perror("open");
diff --git a/hw/xfree86/common/xf86Option.c b/hw/xfree86/common/xf86Option.c
index 9c52878..d1d74f5 100644
--- a/hw/xfree86/common/xf86Option.c
+++ b/hw/xfree86/common/xf86Option.c
@@ -306,7 +306,7 @@ XF86OptionPtr
 xf86ReplaceIntOption(XF86OptionPtr optlist, const char *name, const int val)
 {
     char tmp[16];
-    sprintf(tmp,"%i",val);
+    snprintf(tmp,sizeof(tmp),"%i",val);
     return xf86AddNewOption(optlist,name,tmp);
 }
 
@@ -314,7 +314,7 @@ XF86OptionPtr
 xf86ReplaceRealOption(XF86OptionPtr optlist, const char *name, const double val)
 {
     char tmp[32];
-    snprintf(tmp,32,"%f",val);
+    snprintf(tmp,sizeof(tmp),"%f",val);
     return xf86AddNewOption(optlist,name,tmp);
 }
 
@@ -328,7 +328,7 @@ XF86OptionPtr
 xf86ReplacePercentOption(XF86OptionPtr optlist, const char *name, const double val)
 {
     char tmp[16];
-    sprintf(tmp, "%lf%%", val);
+    snprintf(tmp, sizeof(tmp), "%lf%%", val);
     return xf86AddNewOption(optlist,name,tmp);
 }
 
diff --git a/hw/xfree86/common/xf86sbusBus.c b/hw/xfree86/common/xf86sbusBus.c
index 181c6ab..b7bb913 100644
--- a/hw/xfree86/common/xf86sbusBus.c
+++ b/hw/xfree86/common/xf86sbusBus.c
@@ -88,7 +88,7 @@ xf86SbusProbe(void)
     xf86SbusInfo = malloc(sizeof(psdp));
     *xf86SbusInfo = NULL;
     for (i = 0; i < 32; i++) {
-	sprintf(fbDevName, "/dev/fb%d", i);
+	snprintf(fbDevName, sizeof(fbDevName), "/dev/fb%d", i);
 	CheckSbusDevice(fbDevName, i);
     }
     if (sparcPromInit() >= 0) {
diff --git a/hw/xfree86/fbdevhw/fbdevhw.c b/hw/xfree86/fbdevhw/fbdevhw.c
index dee731b..ca549d6 100644
--- a/hw/xfree86/fbdevhw/fbdevhw.c
+++ b/hw/xfree86/fbdevhw/fbdevhw.c
@@ -266,20 +266,20 @@ fbdev_open_pci(struct pci_device * pPci, char **namep)
     int	fd, i;
 
     for (i = 0; i < 8; i++) {
-	sprintf(filename, 
+	snprintf(filename, sizeof(filename),
 		"/sys/bus/pci/devices/%04x:%02x:%02x.%d/graphics/fb%d",
 		pPci->domain, pPci->bus, pPci->dev, pPci->func, i);
 
 	fd = open(filename, O_RDONLY, 0);
         if (fd < 0) {
-            sprintf(filename,
+            snprintf(filename, sizeof(filename),
                     "/sys/bus/pci/devices/%04x:%02x:%02x.%d/graphics:fb%d",
                     pPci->domain, pPci->bus, pPci->dev, pPci->func, i);
             fd = open(filename, O_RDONLY, 0);
         }
 	if (fd >= 0) {
 	    close(fd);
-	    sprintf(filename, "/dev/fb%d", i);
+	    snprintf(filename, sizeof(filename), "/dev/fb%d", i);
 
 	    fd = open(filename, O_RDWR, 0);
 	    if (fd != -1) {
diff --git a/hw/xfree86/os-support/bsd/bsd_init.c b/hw/xfree86/os-support/bsd/bsd_init.c
index b58d6a7..7079d62 100644
--- a/hw/xfree86/os-support/bsd/bsd_init.c
+++ b/hw/xfree86/os-support/bsd/bsd_init.c
@@ -446,7 +446,7 @@ xf86OpenSyscons()
 	    }
 
 	    close(fd);
-	    sprintf(vtname, "/dev/ttyv%01x", xf86Info.vtno - 1);
+	    snprintf(vtname, sizeof(vtname), "/dev/ttyv%01x", xf86Info.vtno - 1);
 	    if ((fd = open(vtname, SYSCONS_CONSOLE_MODE, 0)) < 0)
 	    {
 		FatalError("xf86OpenSyscons: Cannot open %s (%s)",
@@ -550,13 +550,13 @@ xf86OpenPcvt()
 	    }
 
 	    close(fd);
-            sprintf(vtname, "%s%01x", vtprefix, xf86Info.vtno - 1);
+            snprintf(vtname, sizeof(vtname), "%s%01x", vtprefix, xf86Info.vtno - 1);
 	    if ((fd = open(vtname, PCVT_CONSOLE_MODE, 0)) < 0)
 	    {
 		ErrorF("xf86OpenPcvt: Cannot open %s (%s)",
 			   vtname, strerror(errno));
 		xf86Info.vtno = initialVT;
-	        sprintf(vtname, "%s%01x", vtprefix, xf86Info.vtno - 1);
+	        snprintf(vtname, sizeof(vtname), "%s%01x", vtprefix, xf86Info.vtno - 1);
 		if ((fd = open(vtname, PCVT_CONSOLE_MODE, 0)) < 0) {
 			FatalError("xf86OpenPcvt: Cannot open %s (%s)",
 			   	vtname, strerror(errno));
@@ -602,9 +602,9 @@ xf86OpenWScons()
     /* XXX Is this ok? */
     for (i = 0; i < 8; i++) {
 #if defined(__NetBSD__)
-	sprintf(ttyname, "/dev/ttyE%d", i);
+	snprintf(ttyname, sizeof(ttyname), "/dev/ttyE%d", i);
 #elif defined(__OpenBSD__)
-	sprintf(ttyname, "/dev/ttyC%x", i);
+	snprintf(ttyname,  sizeof(ttyname), "/dev/ttyC%x", i);
 #endif
 	if ((fd = open(ttyname, 2)) != -1)
 	    break;
diff --git a/hw/xfree86/os-support/bus/Sbus.c b/hw/xfree86/os-support/bus/Sbus.c
index 7829d80..c02d2cd 100644
--- a/hw/xfree86/os-support/bus/Sbus.c
+++ b/hw/xfree86/os-support/bus/Sbus.c
@@ -446,14 +446,14 @@ promGetReg(int type)
     if (prop && len >= 4) {
 	unsigned int *reg = (unsigned int *)prop;
 	if (!promP1275 || (type == PROM_NODE_SBUS) || (type == PROM_NODE_EBUS))
-	    sprintf (regstr, "@%x,%x", reg[0], reg[1]);
+	    snprintf (regstr, sizeof(regstr), "@%x,%x", reg[0], reg[1]);
 	else if (type == PROM_NODE_PCI) {
 	    if ((reg[0] >> 8) & 7)
-		sprintf (regstr, "@%x,%x", (reg[0] >> 11) & 0x1f, (reg[0] >> 8) & 7);
+		snprintf (regstr, sizeof(regstr), "@%x,%x", (reg[0] >> 11) & 0x1f, (reg[0] >> 8) & 7);
 	    else
-		sprintf (regstr, "@%x", (reg[0] >> 11) & 0x1f);
+		snprintf (regstr, sizeof(regstr), "@%x", (reg[0] >> 11) & 0x1f);
 	} else if (len == 4)
-	    sprintf (regstr, "@%x", reg[0]);
+	    snprintf (regstr, sizeof(regstr), "@%x", reg[0]);
 	else {
 	    unsigned int regs[2];
 
@@ -465,9 +465,9 @@ promGetReg(int type)
 	    prop = promGetProperty("upa-portid", &len);
 	    if (prop && len == 4) {
 		reg = (unsigned int *)prop;
-		sprintf (regstr, "@%x,%x", reg[0], regs[1]);
+		snprintf (regstr, sizeof(regstr), "@%x,%x", reg[0], regs[1]);
 	    } else
-		sprintf (regstr, "@%x,%x", regs[0] >> 4, regs[1]);
+		snprintf (regstr, sizeof(regstr), "@%x,%x", regs[0] >> 4, regs[1]);
 	}
     }
     return regstr;
diff --git a/hw/xfree86/os-support/linux/lnx_init.c b/hw/xfree86/os-support/linux/lnx_init.c
index f18271f..5f3e3a9 100644
--- a/hw/xfree86/os-support/linux/lnx_init.c
+++ b/hw/xfree86/os-support/linux/lnx_init.c
@@ -146,7 +146,7 @@ xf86OpenConsole(void)
 
         i=0;
         while (vcs[i] != NULL) {
-            sprintf(vtname, vcs[i], xf86Info.vtno); /* /dev/tty1-64 */
+            snprintf(vtname, sizeof(vtname), vcs[i], xf86Info.vtno); /* /dev/tty1-64 */
      	    if ((xf86Info.consoleFd = open(vtname, O_RDWR|O_NDELAY, 0)) >= 0)
 		break;
             i++;
diff --git a/hw/xfree86/x86emu/debug.c b/hw/xfree86/x86emu/debug.c
index 5eda908..04d0741 100644
--- a/hw/xfree86/x86emu/debug.c
+++ b/hw/xfree86/x86emu/debug.c
@@ -172,7 +172,7 @@ void x86emu_decode_printf (char *x)
 void x86emu_decode_printf2 (char *x, int y)
 {
 	char temp[100];
-	sprintf(temp,x,y);
+	snprintf(temp,sizeof(temp),x,y);
 	sprintf(M.x86.decoded_buf+M.x86.enc_str_pos,"%s",temp);
 	M.x86.enc_str_pos += strlen(temp);
 }
diff --git a/os/connection.c b/os/connection.c
index b339f4e..4de6bbe 100644
--- a/os/connection.c
+++ b/os/connection.c
@@ -386,7 +386,7 @@ CreateWellKnownSockets(void)
 
     FD_ZERO (&WellKnownConnections);
 
-    sprintf (port, "%d", atoi (display));
+    snprintf (port, sizeof(port), "%d", atoi (display));
 
     if ((_XSERVTransMakeAllCOTSServerListeners (port, &partial,
 	&ListenTransCount, &ListenTransConns) >= 0) &&
@@ -1267,7 +1267,7 @@ void ListenOnOpenFD(int fd, int noxauth) {
         strcpy(port, display_env);
     } else {
         /* Just some default so things don't break and die. */
-        sprintf(port, ":%d", atoi(display));
+        snprintf(port, sizeof(port), ":%d", atoi(display));
     }
 
     /* Make our XtransConnInfo
diff --git a/os/osinit.c b/os/osinit.c
index 45d202d..acea682 100644
--- a/os/osinit.c
+++ b/os/osinit.c
@@ -213,7 +213,7 @@ OsInit(void)
 	    FILE *err;
 
 	    if (strlen (display) + strlen (ADMPATH) + 1 < sizeof fname)
-		sprintf (fname, ADMPATH, display);
+		snprintf (fname, sizeof(fname), ADMPATH, display);
 	    else
 		strcpy (fname, devnull);
 	    /*
diff --git a/os/rpcauth.c b/os/rpcauth.c
index ad6ebf9..989a49a 100644
--- a/os/rpcauth.c
+++ b/os/rpcauth.c
@@ -137,13 +137,14 @@ SecureRPCCheck (unsigned short data_length, const char *data,
     } else {
 	fullname = authdes_ezdecode(data, data_length);
 	if (fullname == (char *)0) {
-	    sprintf(rpc_error, "Unable to authenticate secure RPC client (why=%d)", why);
+	    snprintf(rpc_error, sizeof(rpc_error),
+		     "Unable to authenticate secure RPC client (why=%d)", why);
 	    *reason = rpc_error;
 	} else {
 	    if (ForEachHostInFamily (FamilyNetname, CheckNetName, fullname))
 		return rpc_id;
-	    sprintf(rpc_error, "Principal \"%s\" is not authorized to connect",
-			fullname);
+	    snprintf(rpc_error, sizeof(rpc_error),
+		     "Principal \"%s\" is not authorized to connect", fullname);
 	    *reason = rpc_error;
 	}
     }
diff --git a/os/utils.c b/os/utils.c
index 1c75dfc..c828f01 100644
--- a/os/utils.c
+++ b/os/utils.c
@@ -258,7 +258,7 @@ LockServer(void)
    */
   tmppath = LOCK_DIR;
 
-  sprintf(port, "%d", atoi(display));
+  snprintf(port, sizeof(port), "%d", atoi(display));
   len = strlen(LOCK_PREFIX) > strlen(LOCK_TMP_PREFIX) ? strlen(LOCK_PREFIX) :
 						strlen(LOCK_TMP_PREFIX);
   len += strlen(tmppath) + strlen(port) + strlen(LOCK_SUFFIX) + 1;
@@ -295,7 +295,7 @@ LockServer(void)
   }
   if (lfd < 0)
     FatalError("Could not create lock file in %s\n", tmp);
-  (void) sprintf(pid_str, "%10ld\n", (long)getpid());
+  snprintf(pid_str, sizeof(pid_str), "%10ld\n", (long)getpid());
   (void) write(lfd, pid_str, 11);
   (void) fchmod(lfd, 0444);
   (void) close(lfd);
diff --git a/os/xdmcp.c b/os/xdmcp.c
index f5331e1..4644071 100644
--- a/os/xdmcp.c
+++ b/os/xdmcp.c
@@ -1489,7 +1489,7 @@ get_addr_by_name(
     if (port == 0) {
 	pport = NULL;
     } else if (port > 0 && port < 65535) {
-	sprintf(portstr, "%d", port);
+	snprintf(portstr, sizeof(portstr), "%d", port);
     } else {
 	FatalError("Xserver: port out of range: %d\n", port);
     }
@@ -1612,7 +1612,7 @@ get_mcast_options(int argc, char **argv, int i)
     }
 
     if (xdm_udp_port > 0 && xdm_udp_port < 65535) {
-	sprintf(portstr, "%d", xdm_udp_port);
+	snprintf(portstr, sizeof(portstr), "%d", xdm_udp_port);
     } else {
 	FatalError("Xserver: port out of range: %d\n", xdm_udp_port);
     }
diff --git a/randr/rrinfo.c b/randr/rrinfo.c
index fdf3726..02aea52 100644
--- a/randr/rrinfo.c
+++ b/randr/rrinfo.c
@@ -35,7 +35,7 @@ RROldModeAdd (RROutputPtr output, RRScreenSizePtr size, int refresh)
     RRModePtr   *modes;
     
     memset (&modeInfo, '\0', sizeof (modeInfo));
-    sprintf (name, "%dx%d", size->width, size->height);
+    snprintf (name, sizeof(name), "%dx%d", size->width, size->height);
     
     modeInfo.width = size->width;
     modeInfo.height = size->height;
diff --git a/xkb/xkbtext.c b/xkb/xkbtext.c
index 1ba10a1..885beb7 100644
--- a/xkb/xkbtext.c
+++ b/xkb/xkbtext.c
@@ -119,7 +119,7 @@ char  numBuf[20];
     else if (vmodNames&&(vmodNames[ndx]!=None))
 	 tmp= NameForAtom(vmodNames[ndx]);
     if (tmp==NULL) {
-	sprintf(numBuf,"%d",ndx);
+	snprintf(numBuf,sizeof(numBuf),"%d",ndx);
 	tmp = numBuf;
     }
 
@@ -227,17 +227,17 @@ char	buf[100];
 
     if (format==XkbCFile) {
 	if (ndx<XkbNumModifiers)
-	     sprintf(buf,"%sMapIndex",modNames[ndx]);
+	    snprintf(buf,sizeof(buf),"%sMapIndex",modNames[ndx]);
 	else if (ndx==XkbNoModifier)
-	     sprintf(buf,"XkbNoModifier");
-	else sprintf(buf,"0x%02x",ndx);
+	     snprintf(buf,sizeof(buf),"XkbNoModifier");
+	else snprintf(buf,sizeof(buf),"0x%02x",ndx);
     }
     else {
 	if (ndx<XkbNumModifiers)
 	     strcpy(buf,modNames[ndx]);
 	else if (ndx==XkbNoModifier)
 	     strcpy(buf,"none");
-	else sprintf(buf,"ILLEGAL_%02x",ndx);
+	else snprintf(buf,sizeof(buf),"ILLEGAL_%02x",ndx);
     }
     rtrn= tbGetBuffer(strlen(buf)+1);
     strcpy(rtrn,buf);
@@ -338,7 +338,7 @@ static char buf[32],*rtrn;
 
     if (sym==NoSymbol)
 	 strcpy(rtrn=buf,"NoSymbol");
-    else sprintf(rtrn=buf, "0x%lx", (long)sym);
+    else snprintf(rtrn=buf, sizeof(buf), "0x%lx", (long)sym);
     return rtrn;
 }
 
@@ -383,13 +383,13 @@ char *rtrn;
 	case XkbSI_AnyOf:	rtrn= siMatchText[2]; break;
 	case XkbSI_AllOf:	rtrn= siMatchText[3]; break;
 	case XkbSI_Exactly:	rtrn= siMatchText[4]; break;
-	default:		sprintf(buf,"0x%x",type&XkbSI_OpMask);
+	default:		snprintf(buf,sizeof(buf),"0x%x",type&XkbSI_OpMask);
 				return buf;
     }
     if (format==XkbCFile) {
 	if (type&XkbSI_LevelOneOnly)
-	     sprintf(buf,"XkbSI_LevelOneOnly|XkbSI_%s",rtrn);
-	else sprintf(buf,"XkbSI_%s",rtrn);
+	     snprintf(buf,sizeof(buf),"XkbSI_LevelOneOnly|XkbSI_%s",rtrn);
+	else snprintf(buf,sizeof(buf),"XkbSI_%s",rtrn);
 	rtrn= buf;
     }
     return rtrn;
@@ -640,12 +640,12 @@ char *rtrn;
     if (type<=XkbSA_LastAction) {
 	rtrn= actionTypeNames[type];
 	if (format==XkbCFile) {
-	    sprintf(buf,"XkbSA_%s",rtrn);
+	    snprintf(buf,sizeof(buf),"XkbSA_%s",rtrn);
 	    return buf;
 	}
 	return rtrn;
     }
-    sprintf(buf,"Private");
+    snprintf(buf,sizeof(buf),"Private");
     return buf;
 }
 
@@ -712,10 +712,10 @@ char			tbuf[32];
     act= &action->group;
     TryCopyStr(buf,"group=",sz);
     if (act->flags&XkbSA_GroupAbsolute)
-	 sprintf(tbuf,"%d",XkbSAGroup(act)+1);
+	 snprintf(tbuf,sizeof(tbuf),"%d",XkbSAGroup(act)+1);
     else if (XkbSAGroup(act)<0)
-	 sprintf(tbuf,"%d",XkbSAGroup(act));
-    else sprintf(tbuf,"+%d",XkbSAGroup(act));
+	 snprintf(tbuf,sizeof(tbuf),"%d",XkbSAGroup(act));
+    else snprintf(tbuf,sizeof(tbuf),"+%d",XkbSAGroup(act));
     TryCopyStr(buf,tbuf,sz);
     if (act->type==XkbSA_LockGroup)
 	return TRUE;
@@ -738,13 +738,13 @@ char		tbuf[32];
     x= XkbPtrActionX(act);
     y= XkbPtrActionY(act);
     if ((act->flags&XkbSA_MoveAbsoluteX)||(x<0))
-	 sprintf(tbuf,"x=%d",x);
-    else sprintf(tbuf,"x=+%d",x);
+	 snprintf(tbuf,sizeof(tbuf),"x=%d",x);
+    else snprintf(tbuf,sizeof(tbuf),"x=+%d",x);
     TryCopyStr(buf,tbuf,sz);
 
     if ((act->flags&XkbSA_MoveAbsoluteY)||(y<0))
-	 sprintf(tbuf,",y=%d",y);
-    else sprintf(tbuf,",y=+%d",y);
+	 snprintf(tbuf,sizeof(tbuf),",y=%d",y);
+    else snprintf(tbuf,sizeof(tbuf),",y=+%d",y);
     TryCopyStr(buf,tbuf,sz);
     if (act->flags&XkbSA_NoAcceleration)
 	TryCopyStr(buf,",!accel",sz);
@@ -761,24 +761,24 @@ char			tbuf[32];
     act= &action->btn;
     TryCopyStr(buf,"button=",sz);
     if ((act->button>0)&&(act->button<6)) {
-	 sprintf(tbuf,"%d",act->button);
+	 snprintf(tbuf,sizeof(tbuf),"%d",act->button);
 	 TryCopyStr(buf,tbuf,sz);
     }
     else TryCopyStr(buf,"default",sz);
     if (act->count>0) {
-	sprintf(tbuf,",count=%d",act->count);
+	snprintf(tbuf,sizeof(tbuf),",count=%d",act->count);
 	TryCopyStr(buf,tbuf,sz);
     }
     if (action->type==XkbSA_LockPtrBtn) {
 	switch (act->flags&(XkbSA_LockNoUnlock|XkbSA_LockNoLock)) {
 	    case XkbSA_LockNoLock:
-		sprintf(tbuf,",affect=unlock"); break;
+		snprintf(tbuf,sizeof(tbuf),",affect=unlock"); break;
 	    case XkbSA_LockNoUnlock:
-		sprintf(tbuf,",affect=lock"); break;
+		snprintf(tbuf,sizeof(tbuf),",affect=lock"); break;
 	    case XkbSA_LockNoUnlock|XkbSA_LockNoLock:
-		sprintf(tbuf,",affect=neither"); break;
+		snprintf(tbuf,sizeof(tbuf),",affect=neither"); break;
 	    default:
-		sprintf(tbuf,",affect=both"); break;
+		snprintf(tbuf,sizeof(tbuf),",affect=both"); break;
 	}
 	TryCopyStr(buf,tbuf,sz);
     }
@@ -797,8 +797,8 @@ char			tbuf[32];
     if (act->affect==XkbSA_AffectDfltBtn) {
 	TryCopyStr(buf,"affect=button,button=",sz);
 	if ((act->flags&XkbSA_DfltBtnAbsolute)||(XkbSAPtrDfltValue(act)<0))
-	     sprintf(tbuf,"%d",XkbSAPtrDfltValue(act));
-	else sprintf(tbuf,"+%d",XkbSAPtrDfltValue(act));
+	     snprintf(tbuf,sizeof(tbuf),"%d",XkbSAPtrDfltValue(act));
+	else snprintf(tbuf,sizeof(tbuf),"+%d",XkbSAPtrDfltValue(act));
 	TryCopyStr(buf,tbuf,sz);
     }
     return TRUE;
@@ -814,10 +814,10 @@ char		tbuf[64];
     if (act->flags&XkbSA_ISODfltIsGroup) {
 	TryCopyStr(tbuf,"group=",sz);
 	if (act->flags&XkbSA_GroupAbsolute)
-	     sprintf(tbuf,"%d",XkbSAGroup(act)+1);
+	     snprintf(tbuf,sizeof(tbuf),"%d",XkbSAGroup(act)+1);
 	else if (XkbSAGroup(act)<0)
-	     sprintf(tbuf,"%d",XkbSAGroup(act));
-	else sprintf(tbuf,"+%d",XkbSAGroup(act));
+	     snprintf(tbuf,sizeof(tbuf),"%d",XkbSAGroup(act));
+	else snprintf(tbuf,sizeof(tbuf),"+%d",XkbSAGroup(act));
 	TryCopyStr(buf,tbuf,sz);
     }
     else {
@@ -847,17 +847,17 @@ char		tbuf[64];
 	    nOut++;
 	}
 	if ((act->affect&XkbSA_ISONoAffectGroup)==0) {
-	    sprintf(tbuf,"%sgroups",(nOut>0?"+":""));
+	    snprintf(tbuf,sizeof(tbuf),"%sgroups",(nOut>0?"+":""));
 	    TryCopyStr(buf,tbuf,sz);
 	    nOut++;
 	}
 	if ((act->affect&XkbSA_ISONoAffectPtr)==0) {
-	    sprintf(tbuf,"%spointer",(nOut>0?"+":""));
+	    snprintf(tbuf,sizeof(tbuf),"%spointer",(nOut>0?"+":""));
 	    TryCopyStr(buf,tbuf,sz);
 	    nOut++;
 	}
 	if ((act->affect&XkbSA_ISONoAffectCtrls)==0) {
-	    sprintf(tbuf,"%scontrols",(nOut>0?"+":""));
+	    snprintf(tbuf,sizeof(tbuf),"%scontrols",(nOut>0?"+":""));
 	    TryCopyStr(buf,tbuf,sz);
 	    nOut++;
 	}
@@ -875,8 +875,8 @@ char			tbuf[32];
 
     act= &action->screen;
     if ((act->flags&XkbSA_SwitchAbsolute)||(XkbSAScreen(act)<0))
-	 sprintf(tbuf,"screen=%d",XkbSAScreen(act));
-    else sprintf(tbuf,"screen=+%d",XkbSAScreen(act));
+	 snprintf(tbuf,sizeof(tbuf),"screen=%d",XkbSAScreen(act));
+    else snprintf(tbuf,sizeof(tbuf),"screen=+%d",XkbSAScreen(act));
     TryCopyStr(buf,tbuf,sz);
     if (act->flags&XkbSA_SwitchApplication)
 	 TryCopyStr(buf,",!same",sz);
@@ -903,67 +903,67 @@ char			tbuf[32];
     else {
 	int nOut= 0;
 	if (tmp&XkbRepeatKeysMask) {
-	    sprintf(tbuf,"%sRepeatKeys",(nOut>0?"+":""));
+	    snprintf(tbuf,sizeof(tbuf),"%sRepeatKeys",(nOut>0?"+":""));
 	    TryCopyStr(buf,tbuf,sz);
 	    nOut++;
 	}
 	if (tmp&XkbSlowKeysMask) {
-	    sprintf(tbuf,"%sSlowKeys",(nOut>0?"+":""));
+	    snprintf(tbuf,sizeof(tbuf),"%sSlowKeys",(nOut>0?"+":""));
 	    TryCopyStr(buf,tbuf,sz);
 	    nOut++;
 	}
 	if (tmp&XkbBounceKeysMask) {
-	    sprintf(tbuf,"%sBounceKeys",(nOut>0?"+":""));
+	    snprintf(tbuf,sizeof(tbuf),"%sBounceKeys",(nOut>0?"+":""));
 	    TryCopyStr(buf,tbuf,sz);
 	    nOut++;
 	}
 	if (tmp&XkbStickyKeysMask) {
-	    sprintf(tbuf,"%sStickyKeys",(nOut>0?"+":""));
+	    snprintf(tbuf,sizeof(tbuf),"%sStickyKeys",(nOut>0?"+":""));
 	    TryCopyStr(buf,tbuf,sz);
 	    nOut++;
 	}
 	if (tmp&XkbMouseKeysMask) {
-	    sprintf(tbuf,"%sMouseKeys",(nOut>0?"+":""));
+	    snprintf(tbuf,sizeof(tbuf),"%sMouseKeys",(nOut>0?"+":""));
 	    TryCopyStr(buf,tbuf,sz);
 	    nOut++;
 	}
 	if (tmp&XkbMouseKeysAccelMask) {
-	    sprintf(tbuf,"%sMouseKeysAccel",(nOut>0?"+":""));
+	    snprintf(tbuf,sizeof(tbuf),"%sMouseKeysAccel",(nOut>0?"+":""));
 	    TryCopyStr(buf,tbuf,sz);
 	    nOut++;
 	}
 	if (tmp&XkbAccessXKeysMask) {
-	    sprintf(tbuf,"%sAccessXKeys",(nOut>0?"+":""));
+	    snprintf(tbuf,sizeof(tbuf),"%sAccessXKeys",(nOut>0?"+":""));
 	    TryCopyStr(buf,tbuf,sz);
 	    nOut++;
 	}
 	if (tmp&XkbAccessXTimeoutMask) {
-	    sprintf(tbuf,"%sAccessXTimeout",(nOut>0?"+":""));
+	    snprintf(tbuf,sizeof(tbuf),"%sAccessXTimeout",(nOut>0?"+":""));
 	    TryCopyStr(buf,tbuf,sz);
 	    nOut++;
 	}
 	if (tmp&XkbAccessXFeedbackMask) {
-	    sprintf(tbuf,"%sAccessXFeedback",(nOut>0?"+":""));
+	    snprintf(tbuf,sizeof(tbuf),"%sAccessXFeedback",(nOut>0?"+":""));
 	    TryCopyStr(buf,tbuf,sz);
 	    nOut++;
 	}
 	if (tmp&XkbAudibleBellMask) {
-	    sprintf(tbuf,"%sAudibleBell",(nOut>0?"+":""));
+	    snprintf(tbuf,sizeof(tbuf),"%sAudibleBell",(nOut>0?"+":""));
 	    TryCopyStr(buf,tbuf,sz);
 	    nOut++;
 	}
 	if (tmp&XkbOverlay1Mask) {
-	    sprintf(tbuf,"%sOverlay1",(nOut>0?"+":""));
+	    snprintf(tbuf,sizeof(tbuf),"%sOverlay1",(nOut>0?"+":""));
 	    TryCopyStr(buf,tbuf,sz);
 	    nOut++;
 	}
 	if (tmp&XkbOverlay2Mask) {
-	    sprintf(tbuf,"%sOverlay2",(nOut>0?"+":""));
+	    snprintf(tbuf,sizeof(tbuf),"%sOverlay2",(nOut>0?"+":""));
 	    TryCopyStr(buf,tbuf,sz);
 	    nOut++;
 	}
 	if (tmp&XkbIgnoreGroupLockMask) {
-	    sprintf(tbuf,"%sIgnoreGroupLock",(nOut>0?"+":""));
+	    snprintf(tbuf,sizeof(tbuf),"%sIgnoreGroupLock",(nOut>0?"+":""));
 	    TryCopyStr(buf,tbuf,sz);
 	    nOut++;
 	}
@@ -990,12 +990,12 @@ char			tbuf[32];
     else if (act->flags&XkbSA_MessageOnPress)
 	 TryCopyStr(buf,"KeyPress",sz);
     else TryCopyStr(buf,"KeyRelease",sz);
-    sprintf(tbuf,",data[0]=0x%02x",act->message[0]); TryCopyStr(buf,tbuf,sz);
-    sprintf(tbuf,",data[1]=0x%02x",act->message[1]); TryCopyStr(buf,tbuf,sz);
-    sprintf(tbuf,",data[2]=0x%02x",act->message[2]); TryCopyStr(buf,tbuf,sz);
-    sprintf(tbuf,",data[3]=0x%02x",act->message[3]); TryCopyStr(buf,tbuf,sz);
-    sprintf(tbuf,",data[4]=0x%02x",act->message[4]); TryCopyStr(buf,tbuf,sz);
-    sprintf(tbuf,",data[5]=0x%02x",act->message[5]); TryCopyStr(buf,tbuf,sz);
+    snprintf(tbuf,sizeof(tbuf),",data[0]=0x%02x",act->message[0]); TryCopyStr(buf,tbuf,sz);
+    snprintf(tbuf,sizeof(tbuf),",data[1]=0x%02x",act->message[1]); TryCopyStr(buf,tbuf,sz);
+    snprintf(tbuf,sizeof(tbuf),",data[2]=0x%02x",act->message[2]); TryCopyStr(buf,tbuf,sz);
+    snprintf(tbuf,sizeof(tbuf),",data[3]=0x%02x",act->message[3]); TryCopyStr(buf,tbuf,sz);
+    snprintf(tbuf,sizeof(tbuf),",data[4]=0x%02x",act->message[4]); TryCopyStr(buf,tbuf,sz);
+    snprintf(tbuf,sizeof(tbuf),",data[5]=0x%02x",act->message[5]); TryCopyStr(buf,tbuf,sz);
     return TRUE;
 }
 
@@ -1016,9 +1016,9 @@ unsigned		vmods,vmods_mask;
 				(xkb->names->keys[kc].name[0]!='\0')) {
 	char *kn;
 	kn= XkbKeyNameText(xkb->names->keys[kc].name,XkbXKBFile);
-	sprintf(tbuf,"key=%s",kn);
+	snprintf(tbuf,sizeof(tbuf),"key=%s",kn);
     }
-    else sprintf(tbuf,"key=%d",kc);
+    else snprintf(tbuf,sizeof(tbuf),"key=%d",kc);
     TryCopyStr(buf,tbuf,sz);
     if ((act->mods_mask==0)&&(vmods_mask==0))
 	return TRUE;
@@ -1054,24 +1054,24 @@ XkbDeviceBtnAction *	act;
 char			tbuf[32];
 
     act= &action->devbtn;
-    sprintf(tbuf,"device= %d",act->device); TryCopyStr(buf,tbuf,sz);
+    snprintf(tbuf,sizeof(tbuf),"device= %d",act->device); TryCopyStr(buf,tbuf,sz);
     TryCopyStr(buf,",button=",sz);
-    sprintf(tbuf,"%d",act->button);
+    snprintf(tbuf,sizeof(tbuf),"%d",act->button);
     TryCopyStr(buf,tbuf,sz);
     if (act->count>0) {
-	sprintf(tbuf,",count=%d",act->count);
+	snprintf(tbuf,sizeof(tbuf),",count=%d",act->count);
 	TryCopyStr(buf,tbuf,sz);
     }
     if (action->type==XkbSA_LockDeviceBtn) {
 	switch (act->flags&(XkbSA_LockNoUnlock|XkbSA_LockNoLock)) {
 	    case XkbSA_LockNoLock:
-		sprintf(tbuf,",affect=unlock"); break;
+		snprintf(tbuf,sizeof(tbuf),",affect=unlock"); break;
 	    case XkbSA_LockNoUnlock:
-		sprintf(tbuf,",affect=lock"); break;
+		snprintf(tbuf,sizeof(tbuf),",affect=lock"); break;
 	    case XkbSA_LockNoUnlock|XkbSA_LockNoLock:
-		sprintf(tbuf,",affect=neither"); break;
+		snprintf(tbuf,sizeof(tbuf),",affect=neither"); break;
 	    default:
-		sprintf(tbuf,",affect=both"); break;
+		snprintf(tbuf,sizeof(tbuf),",affect=both"); break;
 	}
 	TryCopyStr(buf,tbuf,sz);
     }
@@ -1086,14 +1086,14 @@ XkbAnyAction *	act;
 char		tbuf[32];
 
     act= &action->any;
-    sprintf(tbuf,"type=0x%02x",act->type); TryCopyStr(buf,tbuf,sz);
-    sprintf(tbuf,",data[0]=0x%02x",act->data[0]); TryCopyStr(buf,tbuf,sz);
-    sprintf(tbuf,",data[1]=0x%02x",act->data[1]); TryCopyStr(buf,tbuf,sz);
-    sprintf(tbuf,",data[2]=0x%02x",act->data[2]); TryCopyStr(buf,tbuf,sz);
-    sprintf(tbuf,",data[3]=0x%02x",act->data[3]); TryCopyStr(buf,tbuf,sz);
-    sprintf(tbuf,",data[4]=0x%02x",act->data[4]); TryCopyStr(buf,tbuf,sz);
-    sprintf(tbuf,",data[5]=0x%02x",act->data[5]); TryCopyStr(buf,tbuf,sz);
-    sprintf(tbuf,",data[6]=0x%02x",act->data[6]); TryCopyStr(buf,tbuf,sz);
+    snprintf(tbuf,sizeof(tbuf),"type=0x%02x",act->type); TryCopyStr(buf,tbuf,sz);
+    snprintf(tbuf,sizeof(tbuf),",data[0]=0x%02x",act->data[0]); TryCopyStr(buf,tbuf,sz);
+    snprintf(tbuf,sizeof(tbuf),",data[1]=0x%02x",act->data[1]); TryCopyStr(buf,tbuf,sz);
+    snprintf(tbuf,sizeof(tbuf),",data[2]=0x%02x",act->data[2]); TryCopyStr(buf,tbuf,sz);
+    snprintf(tbuf,sizeof(tbuf),",data[3]=0x%02x",act->data[3]); TryCopyStr(buf,tbuf,sz);
+    snprintf(tbuf,sizeof(tbuf),",data[4]=0x%02x",act->data[4]); TryCopyStr(buf,tbuf,sz);
+    snprintf(tbuf,sizeof(tbuf),",data[5]=0x%02x",act->data[5]); TryCopyStr(buf,tbuf,sz);
+    snprintf(tbuf,sizeof(tbuf),",data[6]=0x%02x",act->data[6]); TryCopyStr(buf,tbuf,sz);
     return TRUE;
 }
 
@@ -1135,7 +1135,7 @@ char	buf[ACTION_SZ],*tmp;
 int	sz;
 
     if (format==XkbCFile) {
-	sprintf(buf,
+	snprintf(buf,sizeof(buf),
 	    "{ %20s, { 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x, 0x%02x } }",
 	    XkbActionTypeText(action->type,XkbCFile),
 	    action->any.data[0],action->any.data[1],action->any.data[2],
@@ -1143,7 +1143,7 @@ int	sz;
 	    action->any.data[6]);
     }
     else {
-	sprintf(buf,"%s(",XkbActionTypeText(action->type,XkbXKBFile));
+	snprintf(buf,sizeof(buf),"%s(",XkbActionTypeText(action->type,XkbXKBFile));
 	sz= ACTION_SZ-strlen(buf)+2; /* room for close paren and NULL */
 	if (action->type<(unsigned)XkbSA_NumActions)
 	     (*copyActionArgs[action->type])(xkb,action,buf,&sz);
@@ -1163,8 +1163,8 @@ char	buf[256],*tmp;
 
     if (format==XkbCFile) {
 	if (behavior->type==XkbKB_Default)
-	     sprintf(buf,"{   0,    0 }");
-	else sprintf(buf,"{ %3d, 0x%02x }",behavior->type,behavior->data);
+	     snprintf(buf,sizeof(buf),"{   0,    0 }");
+	else snprintf(buf,sizeof(buf),"{ %3d, 0x%02x }",behavior->type,behavior->data);
     }
     else {
 	unsigned 	type,permanent;
@@ -1172,14 +1172,14 @@ char	buf[256],*tmp;
 	permanent=((behavior->type&XkbKB_Permanent)!=0);
 
 	if (type==XkbKB_Lock) {
-	    sprintf(buf,"lock= %s",(permanent?"Permanent":"TRUE"));
+	    snprintf(buf,sizeof(buf),"lock= %s",(permanent?"Permanent":"TRUE"));
 	}
 	else if (type==XkbKB_RadioGroup) {
 	    int 	g;
 	    char	*tmp;
 	    g= ((behavior->data)&(~XkbKB_RGAllowNone))+1;
 	    if (XkbKB_RGAllowNone&behavior->data) {
-		sprintf(buf,"allowNone,");
+		snprintf(buf,sizeof(buf),"allowNone,");
 		tmp= &buf[strlen(buf)];
 	    }
 	    else tmp= buf;
@@ -1197,12 +1197,12 @@ char	buf[256],*tmp;
 		kn= XkbKeyNameText(xkb->names->keys[kc].name,XkbXKBFile);
 	    else {
 		static char tbuf[8];
-		sprintf(tbuf,"%d",kc);
+		snprintf(tbuf,sizeof(tbuf),"%d",kc);
 		kn= tbuf;
 	    }
 	    if (permanent)
-		 sprintf(buf,"permanentOverlay%d= %s",ndx,kn);
-	    else sprintf(buf,"overlay%d= %s",ndx,kn);
+		 snprintf(buf,sizeof(buf),"permanentOverlay%d= %s",ndx,kn);
+	    else snprintf(buf,sizeof(buf),"overlay%d= %s",ndx,kn);
 	}
     }
     tmp= tbGetBuffer(strlen(buf)+1);
-- 
1.7.3.2



More information about the xorg-devel mailing list