[Help-gnutls] Re: gnutls_transport_ptr and int fd's

Simon Josefsson simon at josefsson.org
Mon May 5 13:34:04 CEST 2008

"Rainer Gerhards" <rgerhards at gmail.com> writes:

> Thanks for the quick response .. and sorry for me replying just now. I
> somehow missed the message :)
> On Tue, Apr 29, 2008 at 11:38 PM, Simon Josefsson <simon at josefsson.org> wrote:
>> "Rainer Gerhards" <rgerhards at gmail.com> writes:
>>  > Hi all,
>>  >
>>  > [working on Fedora 8 with GCC]
>>  >
>>  > I have a minor nit. The root cause is probably not in GnuTLS but in me
>>  > overlooking something...
>>  >
>>  > I supply the int fd I got from socket() to gnutls_transport_set_ptr().
>>  > However, when I do so, I receive the following GCC warning:
>>  >
>>  > cast to pointer from integer of different size
>>  >
>>  > This is annoying during the build process, but of course tolerable. I
>>  > would prefer to see this warning go away, but I do not like to reduce
>>  > GCCs warning level. Any advise would be appreciated.
>>  Try to use a cast when calling the function, such as:
>>   gnutls_transport_set_ptr (session, (gnutls_transport_ptr) sockfd);
> This is what I am doing. A snapshot of the actual code is here:
> http://git.adiscon.com/?p=rsyslog.git;a=blob;f=runtime/nsd_gtls.c;h=b1713240399448e042a27d22caf5a2f044fd65a1;hb=tls
> (e.g. in line 364).
> I replaced this with
> int ii = 6;
> gnutls_transport_set_ptr(pNew->sess, (gnutls_transport_ptr) ii);
> But I still get the same warning message. I am a bit puzzled,
> especially as this seems to be unusual...

Hm, could it be that you should add a trailing '_t'?  That's the new
type name.  However, there is a #define from the old name to the new
name in compat.h, which is always included, so I'm not sure it will
help.  It is the Right Thing though.

Which compiler flags do you use?  Maybe you could cut'n'paste the entire
command line that compiles the file and the warning messages.  Maybe
some earlier message helps understand this.

Generally, this casting is a bit ugly, and it can generate warnings.
Internally in gnutls, there is the GNUTLS_POINTER_TO_INT_CAST #define to
work around this, and similar stuff can also be found in glib.  I'm not
sure what the best solution is here.  Possibly we should have required
that the socket integer is passed to that function as a pointer instead
of as the value itself, but it is a bit late to fix that now.  Thoughts?


More information about the Gnutls-help mailing list