[Libguestfs] [PATCH] lua, perl: Use thread-safe strerror_r instead of strerror (RHBZ#1536763).
Richard W.M. Jones
rjones at redhat.com
Mon Jan 22 17:56:25 UTC 2018
On Mon, Jan 22, 2018 at 06:19:33PM +0100, Pino Toscano wrote:
> > On Monday, 22 January 2018 18:02:08 CET Richard W.M. Jones wrote:
> > ---
> > generator/lua.ml | 22 +++++++++++++++-------
> > generator/perl.ml | 2 +-
> > lua/Makefile.am | 1 +
> > 3 files changed, 17 insertions(+), 8 deletions(-)
>
> Ah, you just beat me to it... OTOH you missed the ruby binding, see
> ruby/ext/guestfs/handle.c.
This one is too hard for me to fix. I need to include the gnulib
directory (to get the replacement strerror_r) otherwise I see:
handle.c: In function 'guestfs_int_ruby_event_to_string':
handle.c:285:5: error: ignoring return value of 'strerror_r', declared with attribute warn_unused_result [-Werror=unused-result]
strerror_r (errno, err, sizeof err);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
but I couldn't work out how to add that without breaking Ruby's
conftests.
In any case Ruby is irretrievably broken with pthread, see recent
nbdkit commits ...
> > diff --git a/generator/lua.ml b/generator/lua.ml
> > index dd6aedbe9..7cfceb152 100644
> > --- a/generator/lua.ml
> > +++ b/generator/lua.ml
> > @@ -63,6 +63,8 @@ let generate_lua_c () =
> > #endif
> > #endif
> >
> > +#include \"ignore-value.h\"
>
> In my local version, ignore_value() was not needed in the lua bindings
> Did you get a build failure without it?
In fact no I don't need it.
BUT I do need to add the gnulib directory so we get the replacement
strerror_r, because the original strerror_r from glibc is declared
with warn_unused_result:
lua-guestfs.c: In function 'guestfs_int_lua_create':
lua-guestfs.c:178:5: error: ignoring return value of 'strerror_r', declared with attribute warn_unused_result [-Werror=unused-result]
strerror_r (errno, err, sizeof err);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Anyway, I dropped ignore_value but still added gnulib/lib to the
include path.
> > #include <guestfs.h>
> > #include \"guestfs-utils.h\"
> >
> > @@ -142,6 +144,7 @@ guestfs_int_lua_create (lua_State *L)
> > guestfs_h *g;
> > struct userdata *u;
> > unsigned flags = 0;
> > + char err[128];
>
> In other places were strerror_r is used, the size of the buffer is 256.
> Can you please adapt it? (Mostly so we have the same code everywhere.)
I pushed this with the changes above, plus err[256].
Thanks,
Rich.
--
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
Fedora Windows cross-compiler. Compile Windows programs, test, and
build Windows installers. Over 100 libraries supported.
http://fedoraproject.org/wiki/MinGW
More information about the Libguestfs
mailing list