[gpgme] change work dir
marcus.brinkmann at ruhr-uni-bochum.de
Sun Dec 12 15:58:32 CET 2004
At Sat, 11 Dec 2004 15:35:42 +0100,
micron <micron at madlab.it> wrote:
> a.out: engine.c:308: _gpgme_set_engine_info: Assertion `file_name' failed.
Excellent, you found a bug ;)
> - assert (file_name);
> - new_file_name = strdup (new_file_name);
> + assert (new_file_name);
> + file_name = strdup (new_file_name);
Only the assert change is correct, the second change is incorrect.
Try this patch instead (already checked in)
2004-12-12 Marcus Brinkmann <marcus at g10code.de>
* engine.c (_gpgme_set_engine_info): Fix assertion.
--- engine.c 7 Dec 2004 21:13:36 -0000 1.46
+++ engine.c 12 Dec 2004 14:55:55 -0000
@@ -305,7 +305,7 @@ _gpgme_set_engine_info (gpgme_engine_inf
new_file_name = engine_get_file_name (proto);
- assert (file_name);
+ assert (new_file_name);
new_file_name = strdup (new_file_name);
> With a little debug I found that the signal SIGSEGV is raised into
> free (info->file_name)
> at the second iteration.
> info->file_name seems correct, I wasn't able to discover the real problem.
This is due to you not storing a pointer to allocated memory in
new_file_name above, but a pointer to statically allocated memory
(new_file_name is what ends up in info->file_name, and not file_name.
The reason I use a different variable new_file_name is so that
file_name can be const).
I didn't try your test program with my fix, but I am sure you will ;)
More information about the Gnupg-devel