Remove use of strcpy() and sprintf().
authorGuus Sliepen <guus@tinc-vpn.org>
Fri, 15 Apr 2016 09:25:18 +0000 (11:25 +0200)
committerGuus Sliepen <guus@tinc-vpn.org>
Fri, 15 Apr 2016 09:25:18 +0000 (11:25 +0200)
Even though they were safe, compilers like to warn about them nowadays.

src/names.c
src/node.c
src/script.c
src/sptps.c
src/utils.c

index 47729da..a640fe4 100644 (file)
@@ -121,11 +121,11 @@ void make_names(bool daemon) {
        if(!unixsocketname) {
                int len = strlen(pidfilename);
                unixsocketname = xmalloc(len + 8);
-               strcpy(unixsocketname, pidfilename);
+               memcpy(unixsocketname, pidfilename, len);
                if(len > 4 && !strcmp(pidfilename + len - 4, ".pid"))
-                       strcpy(unixsocketname + len - 4, ".socket");
+                       strncpy(unixsocketname + len - 4, ".socket", 8);
                else
-                       strcpy(unixsocketname + len, ".socket");
+                       strncpy(unixsocketname + len, ".socket", 8);
        }
 }
 
index bd94ed0..7242e95 100644 (file)
@@ -186,7 +186,7 @@ bool dump_nodes(connection_t *c) {
        for splay_each(node_t, n, node_tree) {
                char id[2 * sizeof n->id + 1];
                for (size_t c = 0; c < sizeof n->id; ++c)
-                       sprintf(id + 2 * c, "%02hhx", n->id.x[c]);
+                       snprintf(id + 2 * c, 3, "%02hhx", n->id.x[c]);
                id[sizeof id - 1] = 0;
                send_request(c, "%d %d %s %s %s %d %d %d %d %x %x %s %s %d %hd %hd %hd %ld", CONTROL, REQ_DUMP_NODES,
                           n->name, id, n->hostname ?: "unknown port unknown",
index 5ca5673..4cea383 100644 (file)
@@ -75,9 +75,11 @@ bool execute_script(const char *name, char **envp) {
 #ifdef HAVE_MINGW
        if(!*scriptextension) {
                const char *pathext = getenv("PATHEXT") ?: ".COM;.EXE;.BAT;.CMD";
-               char fullname[strlen(scriptname) + strlen(pathext)];
-               char *ext = fullname + strlen(scriptname);
-               strcpy(fullname, scriptname);
+               size_t pathlen = strlen(pathext);
+               size_t scriptlen = strlen(scriptname);
+               char fullname[scriptlen + pathlen + 1];
+               char *ext = fullname + scriptlen;
+               strncpy(fullname, scriptname, sizeof fullname);
 
                const char *p = pathext;
                bool found = false;
@@ -88,7 +90,7 @@ bool execute_script(const char *name, char **envp) {
                                ext[q - p] = 0;
                                q++;
                        } else {
-                               strcpy(ext, p);
+                               strncpy(ext, p, pathlen + 1);
                        }
                        if((found = !access(fullname, F_OK)))
                                break;
index 7bd271b..712d50e 100644 (file)
@@ -204,7 +204,7 @@ static bool generate_key_material(sptps_t *s, const char *shared, size_t len) {
 
        // Create the HMAC seed, which is "key expansion" + session label + server nonce + client nonce
        char seed[s->labellen + 64 + 13];
-       strcpy(seed, "key expansion");
+       memcpy(seed, "key expansion", 13);
        if(s->initiator) {
                memcpy(seed + 13, s->mykex + 1, 32);
                memcpy(seed + 45, s->hiskex + 1, 32);
index 65ba4b9..c374eb5 100644 (file)
@@ -158,7 +158,7 @@ int b64encode_urlsafe(const void *src, char *dst, int length) {
 const char *winerror(int err) {
        static char buf[1024], *ptr;
 
-       ptr = buf + sprintf(buf, "(%d) ", err);
+       ptr = buf + snprintf(buf, sizeof buf, "(%d) ", err);
 
        if (!FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
                NULL, err, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), ptr, sizeof(buf) - (ptr - buf), NULL)) {