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