New GnuPG test release
Stefan Bellon
sbellon at sbellon.de
Tue May 29 10:29:01 CEST 2001
Hallo!
Werner Koch <wk at gnupg.org> wrote:
> I am going to release a GnuPG bug fix version tomorrow. I'd
> appreciate if some of you can check that nothing is more broken than
> before (I have upgraded gettext):
[snip]
Also, ich arbeite ja immer mit dem CVS snapshot. Und seit gestern habe
ich ein Problem. Und zwar bekomme ich einen dump, wenn ich z.B.
--list-key oder --edit-key, etc. mache. Ich habe jetzt mal
nachgeforscht und folgendes herausgefunden:
Der dump selber entsteht in mpi_get_nbits, da dort ein Nullzeiger
hineinübergeben wird. Der wird dann dort ungeprüft dereferenziert.
So, und wo kommt der Nullzeiger her? Dazu habe ich in do_fingerprint_md
geschaut. Das Prinzip ist immer das gleiche:
Dort kommt ein PKT_public_key *pk herein, der "eigentlich" gut
aussieht. D.h. pk ist kein Nullzeiger und pk->pubkey_algo liefert den
korrekten Wert zurück. pubkey_get_npkey liefert in allen Fällen, in
denen das bisher aufgetreten ist, 4 zurück.
So, und nun passiert das Unglück: pk->pkey[i] für i = 1,2,3 ist wieder
ein Zeiger, der nicht null ist, aber pk->pkey[0] ist immer ein
Nullzeiger.
Wie kann das denn sein?
BTW: Das obige Beispiel ist mit DSA/ElGamal Schlüsseln. Mit
RSA-Schlüsseln passiert das gleiche, aber der stack backtrace ist etwas
anders.
Hier übrigens der stack backtrace, wenn ich "gpg --list-key bellon"
mache (mit ein paar Debug-Ausgaben):
*gpg --list-key bellon
gpg: NOTE: THIS IS A DEVELOPMENT VERSION!
gpg: It is only intended for test purposes and should NOT be
gpg: used in a production environment or with production keys!
pubkey_get_npkey(17) = 4
pk->pkey[0] = 0
pk->pkey[1] = 1103683260
pk->pkey[2] = 1103684988
pk->pkey[3] = 1103685028
gpg: Bad system call caught ... exiting
Fatal signal received: Bad system call
A stack backtrace will now follow ...
stack backtrace:
pc: 95ed4 sp: 357b8c __unixlib_internal_post_signal()
pc: 90884 sp: 357ba0 raise()
pc: 71bd0 sp: 357bf0 ?()
Register dump:
a1: 0 a2: e59ff400 a3: 7c1fc400 a4: 0
v1: 41c8de64 v2: 41c8f3bc v3: 0 v4: 4
v5: 6 v6: 41c8de64 sl: 357894 fp: 357c00
ip: 357c04 sp: 357bf0 lr: 60071c30 pc: a0071bcc
pc: 71c00 sp: 357c04 mpi_get_nbits()
pc: 29934 sp: 357c60 do_fingerprint_md()
pc: 29fb0 sp: 357c90 keyid_from_pk()
pc: 19218 sp: 357cdc merge_selfsigs_main()
pc: 199bc sp: 357cfc merge_selfsigs()
pc: 1a7ac sp: 357d58 lookup()
pc: 182c4 sp: 357d98 key_byname()
pc: 1859c sp: 357dc0 get_pubkey_bynames()
pc: 2aa74 sp: 357de0 list_one()
pc: 12d6c sp: 357efc main()
pc: 8d42c sp: 357f14 _main()
Danke für Deine hilfe im Voraus!
Viele Grüße,
Stefan.
--
Stefan Bellon * <mailto:sbellon at sbellon.de> * <http://www.sbellon.de/>
PGP 2.6 and GnuPG (OpenPGP) keys available from my home page
'Work is the curse of the drinking classes.' - Oscar Wilde
More information about the Gnupg-devel
mailing list