Tricky gpgme_wait bug.

Igor Belyi gpgme at katehok.ac93.org
Sat Apr 23 19:25:55 CEST 2005


There's a strange gpgme bug hit by gpgme_wait when there's a sleep 
happen between calls and when the asynchronous command is 
'gpgme_op_verify_start' resulting in an error.

I've attached the program reproducing the problem. An input parameter 
should be a file with an attached signature. The problem can be seen 
when you feed to the program a file containing no signature. You can 
also see that problem does not happen if you comment out 'sleep(1)' in 
the while loop.

I've run it in a debugger and found out that segmentation fault happens 
due to the fact that in the following line of the 
wait-global.c/gpgme_wait() function values of the opaque structure are 
bogus:

item = (struct wait_item_s *) fdt.fds[i].opaque;

I have hard time finding out where this opaque comes from and why would 
it be invalid sometimes, so I thought I will share what I already found.

Hopefully, somebody will have better luck tracking this problem out.
Cheers,
Igor

-------------- next part --------------
A non-text attachment was scrubbed...
Name: gpgme_wait_bug.c
Type: text/x-csrc
Size: 1923 bytes
Desc: not available
Url : /pipermail/attachments/20050423/e8acd22c/gpgme_wait_bug.c


More information about the Gnupg-devel mailing list