diff --git a/src/init.c b/src/init.c
index ac2834e0..7bcd9d97 100644
--- a/src/init.c
+++ b/src/init.c
@@ -957,11 +957,13 @@ void
 setoptval (const char *com, const char *val, const char *optname)
 {
   /* Prepend "--" to OPTNAME. */
-  char dd_optname[2 + MAX_LONGOPTION + 1] = "--";
+  char dd_optname[2 + MAX_LONGOPTION + 1];
 
-  strcpy (dd_optname + 2, optname);
+  if ((unsigned) snprintf(dd_optname sizeof (dd_optname), "--%s", optname) > sizeof (dd_optname))
+    exit (WGET_EXIT_PARSE_ERROR);
 
   assert (val != NULL);
+
   if (!setval_internal (command_by_name (com), dd_optname, val))
     exit (WGET_EXIT_PARSE_ERROR);
 }