Justus Winter, le Thu 04 Sep 2014 12:51:36 +0200, a écrit : > Fixes https://savannah.gnu.org/bugs/?15806 .
Ack. > * trans/hello-mt.c (trivfs_append_args): Escape contents. > * trans/hello.c (trivfs_append_args): Likewise. > --- > trans/hello-mt.c | 28 ++++++++++++++++++++++------ > trans/hello.c | 21 +++++++++++++++++++-- > 2 files changed, 41 insertions(+), 8 deletions(-) > > diff --git a/trans/hello-mt.c b/trans/hello-mt.c > index ba9329a..44d54de 100644 > --- a/trans/hello-mt.c > +++ b/trans/hello-mt.c > @@ -273,16 +273,32 @@ trivfs_append_args (struct trivfs_control *fsys, > { > error_t err; > char *opt; > + size_t opt_len; > + FILE *s; > + char *c; > + > + s = open_memstream (&opt, &opt_len); > + fprintf (s, "--contents='"); > > pthread_rwlock_rdlock (&contents_lock); > - err = asprintf (&opt, "--contents=%s", contents) < 0 ? ENOMEM : 0; > + for (c = contents; *c; c++) > + switch (*c) > + { > + case 0x27: /* Single quote. */ > + fprintf (s, "'\"'\"'"); > + break; > + > + default: > + fprintf (s, "%c", *c); > + } > pthread_rwlock_unlock (&contents_lock); > > - if (!err) > - { > - err = argz_add (argz, argz_len, opt); > - free (opt); > - } > + fprintf (s, "'"); > + fclose (s); > + > + err = argz_add (argz, argz_len, opt); > + > + free (opt); > > return err; > } > diff --git a/trans/hello.c b/trans/hello.c > index 4e88c60..d1884df 100644 > --- a/trans/hello.c > +++ b/trans/hello.c > @@ -246,9 +246,26 @@ trivfs_append_args (struct trivfs_control *fsys, > { > error_t err; > char *opt; > + size_t opt_len; > + FILE *s; > + char *c; > > - if (asprintf (&opt, "--contents=%s", contents) < 0) > - return ENOMEM; > + s = open_memstream (&opt, &opt_len); > + fprintf (s, "--contents='"); > + > + for (c = contents; *c; c++) > + switch (*c) > + { > + case 0x27: /* Single quote. */ > + fprintf (s, "'\"'\"'"); > + break; > + > + default: > + fprintf (s, "%c", *c); > + } > + > + fprintf (s, "'"); > + fclose (s); > > err = argz_add (argz, argz_len, opt); > > -- > 2.1.0 > -- Samuel <y> le y est un animal discret se logeant facilement dans un terminal *** c has changed the topic on channel #ens-mim to ne pas jeter de cacahuetes aux ys, svp -+- #ens-mim - n'oubliez pas le guide -+-