help-gnutls
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: supplemental data handshake message


From: Carolin Latze
Subject: Re: supplemental data handshake message
Date: Mon, 3 May 2010 16:33:20 +0200
User-agent: Thunderbird 2.0.0.24 (X11/20100411)

Hi Simon

int _gnutls_helloworld_supp_recv_params(gnutls_session_t session,const
opaque *data,size_t _data_size)
{
        uint8_t len;
        ssize_t data_size = _data_size;
        unsigned char *msg;

        if (data_size > 0)
        {
          len = data[0];
          DECR_LEN (data_size, len);
          msg=(unsigned char*)malloc(len*sizeof(unsigned char));
          memcpy(msg,&data[1],len);
          msg[len]='\0';
          printf("supp data: %s\n",msg);
        }

        return 0;


Shouldn't you return the length of parsed data here?  Look at
gnutls_supplemental.c, the function _gnutls_parse_supplemental trusts
your function to return the proper length for incrementing the length
pointer for its parsing code.

Just a quick response, haven't looked into this in detail.

/Simon
I don't know whether that would have been the next issue (I fixed it anyway now), but the bigger problem was that I forgot to specify the helloworld supplemental functions and type in lib/gnutls_supplemental.c:


gnutls_supplemental_entry _gnutls_supplemental[] = {
 { "helloworld",
   GNUTLS_SUPPLEMENTAL_HELLOWORLD_DATA,
   gnutls_helloworld_supp_recv_params,
   gnutls_helloworld_supp_send_params },
 {0, 0, 0, 0}
};

Now, I got one step further and the crash occurs in ext_helloworld.c in _gnutls_helloworld_supp_recv_params in line "DECR_LEN (data_size, len);". I try to debug that further....

Thanks!
Carolin





reply via email to

[Prev in Thread] Current Thread [Next in Thread]