Changeset: eb3b7de89d86 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=eb3b7de89d86
Modified Files:
        gdk/gdk_atoms.c
Branch: Jan2014
Log Message:

Avoid using strncpy since it may not null-terminate the destination.


diffs (113 lines):

diff --git a/gdk/gdk_atoms.c b/gdk/gdk_atoms.c
--- a/gdk/gdk_atoms.c
+++ b/gdk/gdk_atoms.c
@@ -167,7 +167,7 @@ ATOMallocate(const char *id)
                if (strlen(id) >= IDLENGTH)
                        GDKfatal("ATOMallocate: name too long");
                memset(BATatoms + t, 0, sizeof(atomDesc));
-               strncpy(BATatoms[t].name, id, IDLENGTH);
+               snprintf(BATatoms[t].name, IDLENGTH, "%s", id);
                BATatoms[t].size = sizeof(int);         /* default */
                BATatoms[t].align = sizeof(int);        /* default */
                BATatoms[t].linear = 1;                 /* default */
@@ -321,7 +321,8 @@ ATOMformat(int t, const void *p, char **
 {
        int (*tostr) (str *, int *, const void *);
 
-       if (p && (t >= 0) && (t < GDKatomcnt) && (tostr = 
BATatoms[t].atomToStr)) {
+       if (p && 0 <= t && t < GDKatomcnt &&
+           (tostr = BATatoms[t].atomToStr)) {
                int sz = 0, l = (*tostr) (buf, &sz, p);
 
                return l;
@@ -329,8 +330,7 @@ ATOMformat(int t, const void *p, char **
        *buf = GDKmalloc(4);
        if (*buf == NULL)
                return -1;
-       strncpy(*buf, "nil", 4);
-       return 3;
+       return snprintf(*buf, 4, "nil");
 }
 
 ptr
@@ -377,8 +377,7 @@ TYPE##ToStr(char **dst, int *len, const 
 {                                                      \
        atommem(char, TYPE##Strlen);                    \
        if (*src == TYPE##_nil) {                       \
-               strncpy(*dst, "nil", *len);             \
-               return 3;                               \
+               return snprintf(*dst, *len, "nil");     \
        }                                               \
        snprintf(*dst, *len, FMT, FMTCAST *src);        \
        return (int) strlen(*dst);                      \
@@ -411,8 +410,7 @@ voidToStr(str *dst, int *len, void *src)
        (void) src;
 
        atommem(char, 4);
-       strncpy(*dst, "nil", *len);
-       return 3;
+       return snprintf(*dst, *len, "nil");
 }
 #endif
 
@@ -468,15 +466,11 @@ bitToStr(char **dst, int *len, const bit
 {
        atommem(char, 6);
 
-       if (*src == bit_nil) {
-               strncpy(*dst, "nil", *len);
-               return 3;
-       } else if (*src) {
-               strncpy(*dst, "true", *len);
-               return 4;
-       }
-       strncpy(*dst, "false", *len);
-       return 5;
+       if (*src == bit_nil)
+               return snprintf(*dst, *len, "nil");
+       if (*src)
+               return snprintf(*dst, *len, "true");
+       return snprintf(*dst, *len, "false");
 }
 
 static bit *
@@ -538,13 +532,11 @@ batToStr(char **dst, int *len, const bat
 
        if (b == bat_nil || (s = BBPname(b)) == NULL || *s == 0) {
                atommem(char, 4);
-               strncpy(*dst, "nil", *len);
-               return 3;
+               return snprintf(*dst, *len, "nil");
        }
        i = (int) (strlen(s) + 4);
        atommem(char, i);
-       snprintf(*dst, *len, "<%s>", s);
-       return (int) strlen(*dst);
+       return snprintf(*dst, *len, "<%s>", s);
 }
 
 static bat *
@@ -1486,8 +1478,7 @@ strToStr(char **dst, int *len, const cha
        if (GDK_STRNIL((str) src)) {
                atommem(char, 4);
 
-               strncpy(*dst, "nil", *len);
-               return 3;
+               return snprintf(*dst, *len, "nil");
        } else {
                int sz = escapedStrlen(src, NULL, NULL, '"');
                atommem(char, sz + 3);
@@ -1701,11 +1692,9 @@ OIDtoStr(char **dst, int *len, const oid
        atommem(char, oidStrlen);
 
        if (*src == oid_nil) {
-               strncpy(*dst, "nil", *len);
-               return 3;
+               return snprintf(*dst, *len, "nil");
        }
-       snprintf(*dst, *len, OIDFMT "@0", *src);
-       return (int) strlen(*dst);
+       return snprintf(*dst, *len, OIDFMT "@0", *src);
 }
 
 atomDesc BATatoms[MAXATOMS] = {
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to