[PATCH:xkbcomp 3/4] Convert remaining sprintf calls to snprintf

Alan Coopersmith alan.coopersmith at oracle.com
Wed Oct 30 02:51:52 CET 2013


Most were fixed length or length checked anyway, this just saves time
doublechecking that.   (A few could be replaced by asprintf, but we
don't have a copy guaranteed to be reachable from this program yet.)

Signed-off-by: Alan Coopersmith <alan.coopersmith at oracle.com>
---
 expr.c     |    2 +-
 geometry.c |   10 +++++-----
 listing.c  |    9 +++++----
 xkbcomp.c  |    4 ++--
 4 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/expr.c b/expr.c
index 96fd956..195e0f3 100644
--- a/expr.c
+++ b/expr.c
@@ -767,7 +767,7 @@ ExprResolveString(ExprDef * expr,
             new = (char *) uAlloc(len);
             if (new)
             {
-                sprintf(new, "%s%s", leftRtrn.str, rightRtrn.str);
+                snprintf(new, len, "%s%s", leftRtrn.str, rightRtrn.str);
                 val_rtrn->str = new;
                 return True;
             }
diff --git a/geometry.c b/geometry.c
index 7f65c3a..cfd1f51 100644
--- a/geometry.c
+++ b/geometry.c
@@ -258,9 +258,9 @@ ddText(Display * dpy, DoodadInfo * di)
     }
     if (di->section)
     {
-        sprintf(buf, "%s in section %s",
-                XkbAtomText(dpy, di->name, XkbMessage), scText(dpy,
-                                                               di->section));
+        snprintf(buf, sizeof(buf), "%s in section %s",
+                 XkbAtomText(dpy, di->name, XkbMessage),
+                 scText(dpy, di->section));
         return buf;
     }
     return XkbAtomText(dpy, di->name, XkbMessage);
@@ -3297,8 +3297,8 @@ FontFromParts(Atom fontTok,
     rtrn = uCalloc(totalSize, 1);
     if (rtrn)
     {
-        sprintf(rtrn, FONT_TEMPLATE, font, weight, slant, setWidth, variant,
-                size, encoding);
+        snprintf(rtrn, totalSize, FONT_TEMPLATE, font, weight, slant,
+                 setWidth, variant, size, encoding);
     }
     return rtrn;
 }
diff --git a/listing.c b/listing.c
index 11de88a..c7f5ef8 100644
--- a/listing.c
+++ b/listing.c
@@ -302,18 +302,19 @@ AddDirectory(char *head, char *ptrn, char *rest, char *map)
     {
         char *tmp, *filename;
         struct stat sbuf;
+        size_t tmpsize;
 
         filename = FileName(file);
         if (!filename || filename[0] == '.')
             continue;
         if (ptrn && (!XkbNameMatchesPattern(filename, ptrn)))
             continue;
-        tmp =
-            (char *) uAlloc((head ? strlen(head) : 0) + strlen(filename) + 2);
+        tmpsize = (head ? strlen(head) : 0) + strlen(filename) + 2;
+        tmp = uAlloc(tmpsize);
         if (!tmp)
             continue;
-        sprintf(tmp, "%s%s%s", (head ? head : ""), (head ? "/" : ""),
-                filename);
+        snprintf(tmp, tmpsize, "%s%s%s",
+                 (head ? head : ""), (head ? "/" : ""), filename);
         if (stat(tmp, &sbuf) < 0)
         {
             uFree(tmp);
diff --git a/xkbcomp.c b/xkbcomp.c
index a4ee359..956e79c 100644
--- a/xkbcomp.c
+++ b/xkbcomp.c
@@ -745,7 +745,7 @@ parseArgs(int argc, char *argv[])
             ACTION("Exiting\n");
             exit(1);
         }
-        sprintf(outputFile, "stdin.%s", fileTypeExt[outputFormat]);
+        snprintf(outputFile, len, "stdin.%s", fileTypeExt[outputFormat]);
     }
     else if ((outputFile == NULL) && (inputFile != NULL))
     {
@@ -773,7 +773,7 @@ parseArgs(int argc, char *argv[])
         }
         ext = strrchr(base, '.');
         if (ext == NULL)
-            sprintf(outputFile, "%s.%s", base, fileTypeExt[outputFormat]);
+            snprintf(outputFile, len, "%s.%s", base, fileTypeExt[outputFormat]);
         else
         {
             strcpy(outputFile, base);
-- 
1.7.9.2



More information about the xorg-devel mailing list