[OTR-dev] Crash when receiving message after canceling encrypted chat (with gdb backtrace)

Ian Goldberg ian at cypherpunks.ca
Wed Feb 9 09:33:44 EST 2005

On Wed, Feb 09, 2005 at 02:39:46AM -0600, Evan Schoenberg wrote:
> A messages B.  OTR session begins.
> A then cancels encryption.  B is told that A is no longer using  
> encryption.
> Without canceling encryption, B messages A.  B is told that he sent  
> encrypted data to A when A wasn't expecting it.  B then promptly  
> crashes.
> (meanwhile, A is told that an encrypted message was received but  
> unreadable... and then the OTR connected callback is called again,  
> indicating I suppose that encryption was re-negotiated).

I can't replicate the crash.  See below.

> Here's the backtrace from B.
> (gdb) bt
> #0  0x9000d280 in strcat ()
> #1  0x075032c0 in otrl_proto_create_data (encmessagep=0xf0130ed4,  
> context=0x285de00, msg=0x71de368 "[resent] [resent] [resent] [resent]  
> [resent] [resent] [resent] [resent] [resent] [resent] [resent] [resent]  
> [resent] [resent] [resent] [resent] [resent] [resent] [resent] [resent]  
> [resent] [resent] [r"..., tlvs=0x0) at  
> /Users/evands/libgaim/Libraries/libotr/src/proto.c:832

So this makes no sense.  The bit that adds "[resent] " to a message
specifically checks to see if it's already there, and if so, doesn't add
it.  So I don't see how the above string could be constructed.

Could you watch the value of context->lastmessage and see where the
extra [resent]'s get added?

   - Ian

More information about the OTR-dev mailing list