Remove format string abuse with sane code.
authorFlorian Dold <florian.dold@gmail.com>
Mon, 25 Apr 2016 23:22:22 +0000 (23:22 +0000)
committerFlorian Dold <florian.dold@gmail.com>
Mon, 25 Apr 2016 23:22:22 +0000 (23:22 +0000)
With the old code, parts of the config file were interpreted as format string,
always a bad idea ...

src/arm/gnunet-service-arm.c

index 28d448f756e79d6dba1eb04506902b88c3b2e76a..189e1872caa069df01890cd7de4b948b0ca12e3a 100644 (file)
@@ -462,11 +462,12 @@ start_process (struct ServiceList *sl,
          /* replace '{}' with service name */
          while (NULL != (optpos = strstr (options, "{}")))
            {
-             optpos[0] = '%';
-             optpos[1] = 's';
-             GNUNET_asprintf (&optpos, options, sl->name);
-             GNUNET_free (options);
-             options = optpos;
+              char *new_options;
+              /* terminate string at opening parenthesis */
+              *optpos = 0;
+              GNUNET_asprintf (&new_options, "%s%s%s", options, sl->name, optpos + 2);
+              GNUNET_free (options);
+              options = new_options;
            }
          /* replace '$PATH' with value associated with "PATH" */
          while (NULL != (optpos = strstr (options, "$")))