fix openbsd warnings / compile errors about sprintf strcpy
authoraaron@localhost.lan <aaron@localhost.lan>
Wed, 16 Jul 2008 13:40:41 +0000 (15:40 +0200)
committeraaron@localhost.lan <aaron@localhost.lan>
Wed, 16 Jul 2008 13:40:41 +0000 (15:40 +0200)
src/link_set.c
src/lq_plugin.c
src/lq_plugin_default_ff.c
src/lq_plugin_default_float.c
src/lq_plugin_default_fpm.c
src/main.c
src/plugin_util.c
src/unix/ifnet.c

index 13fa451..370df9a 100644 (file)
@@ -501,6 +501,7 @@ add_link_entry(const union olsr_ip_addr *local,
   struct link_entry *new_link;
   struct neighbor_entry *neighbor;
   struct link_entry *tmp_link_set;
+  int ifnamelen=-1;
 
   tmp_link_set = lookup_link_entry(remote, remote_main, local_if);
   if (tmp_link_set) {
@@ -528,10 +529,10 @@ add_link_entry(const union olsr_ip_addr *local,
 
   /* copy if_name, if it is defined */
   if (local_if->int_name) {
+    ifnamelen = strlen(local_if->int_name)+1;
     new_link->if_name =
-      olsr_malloc(strlen(local_if->int_name) + 1,
-                 "target of if_name in new link entry");
-    strcpy(new_link->if_name, local_if->int_name);
+      olsr_malloc(ifnamelen, "target of if_name in new link entry");
+    strncpy(new_link->if_name, local_if->int_name, ifnamelen);
   } else
     new_link->if_name = NULL;
 
index 0c2f685..638dbce 100644 (file)
@@ -91,9 +91,9 @@ register_lq_handler(struct lq_handler *handler, const char *name)
 {
   struct lq_handler_node *node;
   
-  node = olsr_malloc(sizeof(*node) + strlen(name) + 1, "olsr lq handler");
-  
-  strcpy(node->name, name);
+  node = olsr_malloc(sizeof(*node) + strlen(name)+1, "olsr lq handler");
+   
+  strncpy(node->name, name, strlen(name));
   node->node.key = node->name;
   node->handler = handler;
   
index 25d719b..bb1c65a 100644 (file)
@@ -259,14 +259,14 @@ void default_lq_clear_ff_hello(void *target) {
 const char *default_lq_print_ff(void *ptr, char separator, struct lqtextbuffer *buffer) {
   struct default_lq_ff *lq = ptr;
 
-  sprintf(buffer->buf, "%s%c%s",
+  snprintf(buffer->buf, "%s%c%s",
       fpmtoa(fpmidiv(itofpm((int)lq->valueLq), 255)),
       separator,
-      fpmtoa(fpmidiv(itofpm((int)lq->valueNlq), 255)));
+      fpmtoa(fpmidiv(itofpm((int)lq->valueNlq), 255)), sizeof(struct lqtextbuffer));
   return buffer->buf;
 }
 
 const char *default_lq_print_cost_ff(olsr_linkcost cost, struct lqtextbuffer *buffer) {
-  sprintf(buffer->buf, "%s", fpmtoa(cost));
+  snprintf(buffer->buf, "%s", fpmtoa(cost), sizeof(struct lqtextbuffer));
   return buffer->buf;
 }
index e22cf2d..95a04c0 100644 (file)
@@ -188,7 +188,7 @@ void default_lq_clear_float(void *target) {
 const char *default_lq_print_float(void *ptr, char separator, struct lqtextbuffer *buffer) {
   struct default_lq_float *lq = ptr;
   
-  sprintf(buffer->buf, "%2.3f%c%2.3f",
+  snprintf(buffer->buf, sizeof(struct lqtextbuffer), "%2.3f%c%2.3f",
       lq->lq,
       separator,
       lq->nlq);
@@ -196,6 +196,8 @@ const char *default_lq_print_float(void *ptr, char separator, struct lqtextbuffe
 }
 
 const char *default_lq_print_cost_float(olsr_linkcost cost, struct lqtextbuffer *buffer) {
-  sprintf(buffer->buf, "%2.3f", ((float)cost)/LQ_PLUGIN_LC_MULTIPLIER);
+  snprintf(buffer->buf, sizeof(struct lqtextbuffer), "%2.3f", ((float)cost)/LQ_PLUGIN_LC_MULTIPLIER );
+       
+
   return buffer->buf;
 }
index ef077ba..069d478 100644 (file)
@@ -201,7 +201,7 @@ void default_lq_clear_fpm(void *target) {
 const char *default_lq_print_fpm(void *ptr, char separator, struct lqtextbuffer *buffer) {
   struct default_lq_fpm *lq = ptr;
   
-  sprintf(buffer->buf, "%0.3f%c%0.3f",
+  snprintf(buffer->buf, sizeof(buffer->buf), "%0.3f%c%0.3f",
       (float)(lq->valueLq) / 255.0,
       separator,
       (float)(lq->valueNlq) / 255.0);
@@ -209,6 +209,6 @@ const char *default_lq_print_fpm(void *ptr, char separator, struct lqtextbuffer
 }
 
 const char *default_lq_print_cost_fpm(olsr_linkcost cost, struct lqtextbuffer *buffer) {
-  sprintf(buffer->buf, "%.3f", (float)(cost) / LQ_FPM_LINKCOST_MULTIPLIER);
+  snprintf(buffer->buf, sizeof(buffer->buf), "%.3f", (float)(cost) / LQ_FPM_LINKCOST_MULTIPLIER);
   return buffer->buf;
 }
index b636c57..b037af2 100644 (file)
@@ -182,7 +182,7 @@ main(int argc, char *argv[])
   if (len == 0 || conf_file_name[len - 1] != '\\')
     conf_file_name[len++] = '\\';
   
-  strcpy(conf_file_name + len, "olsrd.conf");
+  strncpy(conf_file_name + len, "olsrd.conf", FILENAME_MAX);
 #else
   strncpy(conf_file_name, OLSRD_GLOBAL_CONF_FILE, FILENAME_MAX);
 #endif
index d1b6954..f94279f 100644 (file)
@@ -126,7 +126,7 @@ int set_plugin_string(const char *value, void *data, set_plugin_parameter_addon
             OLSR_PRINTF(0, "String too long \"%s\"", value);
             return 1;
         }
-        strcpy(v, value);
+        strncpy(v, value, addon.ui -1 );
         OLSR_PRINTF(1, "%s string %s\n", "Got", value);
     } else {
         OLSR_PRINTF(0, "%s string %s\n", "Ignored", value);
index 8d4be67..5b69e48 100644 (file)
@@ -517,7 +517,7 @@ add_hemu_if(struct olsr_if *iface)
   ifp->int_name = olsr_malloc(strlen("hcif01") + 1, "Interface update 3");
   ifp->int_metric = 0;
 
-  strcpy(ifp->int_name, "hcif01");
+  strncpy(ifp->int_name, "hcif01", sizeof(ifp->int_name));
 
   OLSR_PRINTF(1, "Adding %s(host emulation):\n", ifp->int_name);
 
@@ -883,7 +883,7 @@ chk_if_up(struct olsr_if *iface, int debuglvl __attribute__((unused)))
   ifp->gen_properties = NULL;
   ifp->int_name = olsr_malloc(strlen(ifr.ifr_name) + 1, "Interface update 3");
       
-  strcpy(ifp->int_name, if_basename(ifr.ifr_name));
+  strncpy(ifp->int_name, if_basename(ifr.ifr_name), sizeof(IFNAMSIZ));
   /* Segfaults if using strncpy(IFNAMSIZ) why oh why?? */
   ifp->int_next = ifnet;
   ifnet = ifp;