Re: Segmentation fault: what's wrong with this code?
Neil Horman <[email protected]> Fri, 5 Jun 2026 15:48:12 -0400
| Newsgroups | gmane.comp.encryption.openssl.user |
|---|---|
| Message-ID | <CAJbOq14ta+A60axFT2K7P9NS=ipQgbWsAFWcsURV+JiBJAE2uQ@mail.gmail.com> |
--0000000000009c214a065386f1aa Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Do you have a backtrace of the crash? On Fri, Jun 5, 2026 at 2:33=E2=80=AFPM Stef Bon <[email protected]> wrote: > Hi, > > I've written the following code, but I get a segmentation fault (when > calling EVP_PKEY_free). > I do not see what's causing this. Can you see it? Any help appreciated. > > static void PK_read_spk_from_OSSL_DECODER(char *buffer, long unsigned int > size) > { > OSSL_DECODER_CTX *dctx=3DNULL; > EVP_PKEY *spk=3DNULL; > const unsigned char *start=3D(unsigned char *) buffer; > > /* private key has a PEM encoded key */ > > dctx=3DOSSL_DECODER_CTX_new_for_pkey(&spk, "PEM", NULL, NULL, > EVP_PKEY_KEYPAIR, NULL, NULL); > > if (dctx=3D=3DNULL) { > fprintf(stdout, "cannot create decoder.\n"); > return; > } > > if (OSSL_DECODER_from_data(dctx, &start, &size)<=3D0) { > fprintf(stdout, "decoder error.\n"); > } else { > fprintf(stdout, "decoder finished ok.\n"); > EVP_PKEY_print_private_stdout(spk); > } > > EVP_PKEY_free(spk); > OSSL_DECODER_CTX_free(dctx); > } > > > Thanks in advance, > > Stef Bon > > -- > You received this message because you are subscribed to the Google Groups > "openssl-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to openssl-users+unsubscribe-MCmKBN63+Bmbup2nOX2J7Q@public.gmane.org > To view this discussion visit > https://groups.google.com/a/openssl.org/d/msgid/openssl-users/d37f0ed9-e3= 15-4449-8e27-9cd1902d9190n%40openssl.org > <https://groups.google.com/a/openssl.org/d/msgid/openssl-users/d37f0ed9-e= 315-4449-8e27-9cd1902d9190n%40openssl.org?utm_medium=3Demail&utm_source=3Df= ooter> > . > --=20 You received this message because you are subscribed to the Google Groups "= openssl-users" group. To unsubscribe from this group and stop receiving emails from it, send an e= mail to openssl-users+unsubscribe-MCmKBN63+Bmbup2nOX2J7Q@public.gmane.org To view this discussion visit https://groups.google.com/a/openssl.org/d/msg= id/openssl-users/CAJbOq14ta%2BA60axFT2K7P9NS%3DipQgbWsAFWcsURV%2BJiBJAE2uQ%= 40mail.gmail.com. --0000000000009c214a065386f1aa Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">Do you have a backtrace of the crash?<div><br></div></div>= <br><div class=3D"gmail_quote gmail_quote_container"><div dir=3D"ltr" class= =3D"gmail_attr">On Fri, Jun 5, 2026 at 2:33=E2=80=AFPM Stef Bon <<a href= =3D"mailto:[email protected]">[email protected]</a>> wrote:<br></div><bl= ockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;border-lef= t:1px solid rgb(204,204,204);padding-left:1ex"><div>Hi,</div><div><br></div= ><div>I've written the following code, but I get a segmentation fault (= when calling EVP_PKEY_free).=C2=A0</div><div>I do not see what's causin= g this. Can you see it? Any help appreciated.</div><div><br></div><div> <span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255);font-fami= ly:"Courier New"">static void PK_read_spk_from_OSSL_DECODER(char = *buffer, long unsigned int size)</span><span style=3D"color:rgb(0,0,0);back= ground-color:rgb(255,255,255);font-family:"Courier New""> </span><span style=3D"font-family:"Courier New""><br><span style= =3D"color:rgb(0,0,0);background-color:rgb(255,255,255)">{</span><span style= =3D"color:rgb(0,0,0);background-color:rgb(255,255,255)"> </span><br><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255= )"> =C2=A0=C2=A0=C2=A0OSSL_DECODER_CTX *dctx=3DNULL;</span><span style=3D"c= olor:rgb(0,0,0);background-color:rgb(255,255,255)"> </span><br><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255= )"> =C2=A0=C2=A0=C2=A0EVP_PKEY *spk=3DNULL;</span><span style=3D"color:rgb(= 0,0,0);background-color:rgb(255,255,255)"> </span><br><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255= )"> =C2=A0=C2=A0=C2=A0const unsigned char *start=3D(unsigned char *) buffer= ;</span><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255)">= </span><br><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255= )"></span><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255)= "><br></span></span></div><div><span style=3D"font-family:"Courier New= ""><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255)">= =C2=A0 =C2=A0/* private key has a PEM encoded key */</span><span style=3D"c= olor:rgb(0,0,0);background-color:rgb(255,255,255)"> </span><br><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255= )"> </span><br><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255= )"> =C2=A0=C2=A0=C2=A0dctx=3DOSSL_DECODER_CTX_new_for_pkey(&spk, "= PEM", NULL, NULL, EVP_PKEY_KEYPAIR, NULL, NULL);</span><span style=3D"= color:rgb(0,0,0);background-color:rgb(255,255,255)"> </span><br><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255= )"> </span><br><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255= )"> =C2=A0=C2=A0=C2=A0if (dctx=3D=3DNULL) {</span><span style=3D"color:rgb(= 0,0,0);background-color:rgb(255,255,255)"> </span><br><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255= )"> </span><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255)">= =C2=A0 =C2=A0 =C2=A0 =C2=A0fprintf(stdout, "cannot create decoder.\n&q= uot;);</span><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,2= 55)"> </span><br><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255= )"> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0return;</span><span style=3D"= color:rgb(0,0,0);background-color:rgb(255,255,255)"> </span><br><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255= )"> </span><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255)">= =C2=A0 =C2=A0}</span><span style=3D"color:rgb(0,0,0);background-color:rgb(2= 55,255,255)"> </span><br><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255= )"> </span><br><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255= )"> =C2=A0=C2=A0=C2=A0if (OSSL_DECODER_from_data(dctx, &start, &siz= e)<=3D0) {</span><span style=3D"color:rgb(0,0,0);background-color:rgb(25= 5,255,255)"> </span><br><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255= )"> </span><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255)">= =C2=A0 =C2=A0 =C2=A0 =C2=A0</span><span style=3D"color:rgb(0,0,0);backgroun= d-color:rgb(255,255,255)">fprintf(stdout, "decoder error.\n");</s= pan><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255)"> </span><br><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255= )"> </span><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255)">= =C2=A0 =C2=A0} else {</span><span style=3D"color:rgb(0,0,0);background-colo= r:rgb(255,255,255)"> </span><br><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255= )"> </span><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255)">= =C2=A0 =C2=A0 =C2=A0 =C2=A0fprintf(stdout, "decoder finished ok.\n&quo= t;);</span><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255= )"> </span><br><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255= )"> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0EVP_PKEY_print_private_stdout= (spk);</span><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,2= 55)"> </span><br><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255= )"> </span><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255)">= =C2=A0 =C2=A0}</span><span style=3D"color:rgb(0,0,0);background-color:rgb(2= 55,255,255)"> </span><br><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255= )"> </span><br><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255= )">=C2=A0 =C2=A0EVP_PKEY_free(spk);</span><span style=3D"color:rgb(0,0,0);b= ackground-color:rgb(255,255,255)"> </span><br><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255= )">=C2=A0 =C2=A0OSSL_DECODER_CTX_free(dctx);</span><span style=3D"color:rgb= (0,0,0);background-color:rgb(255,255,255)"> </span><br><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255= )"> </span><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255)">}= </span><span style=3D"color:rgb(0,0,0);background-color:rgb(255,255,255)"> </span><br></span><span style=3D"font-family:monospace"><br><br></span>Than= ks in advance,</div><div><br></div><div>Stef Bon</div> <p></p> -- <br> You received this message because you are subscribed to the Google Groups &= quot;openssl-users" group.<br> To unsubscribe from this group and stop receiving emails from it, send an e= mail to <a href=3D"mailto:openssl-users+unsubscribe-MCmKBN63+BlAfugRpC6u6w@public.gmane.org" target=3D"= _blank">openssl-users+unsubscribe-MCmKBN63+BlAfugRpC6u6w@public.gmane.org</a>.<br> To view this discussion visit <a href=3D"https://groups.google.com/a/openss= l.org/d/msgid/openssl-users/d37f0ed9-e315-4449-8e27-9cd1902d9190n%40openssl= .org?utm_medium=3Demail&utm_source=3Dfooter" target=3D"_blank">https://= groups.google.com/a/openssl.org/d/msgid/openssl-users/d37f0ed9-e315-4449-8e= 27-9cd1902d9190n%40openssl.org</a>.<br> </blockquote></div> <p></p> -- <br /> You received this message because you are subscribed to the Google Groups &= quot;openssl-users" group.<br /> To unsubscribe from this group and stop receiving emails from it, send an e= mail to <a href=3D"mailto:openssl-users+unsubscribe-MCmKBN63+BlAfugRpC6u6w@public.gmane.org">openssl-us= [email protected]</a>.<br /> To view this discussion visit <a href=3D"https://groups.google.com/a/openss= l.org/d/msgid/openssl-users/CAJbOq14ta%2BA60axFT2K7P9NS%3DipQgbWsAFWcsURV%2= BJiBJAE2uQ%40mail.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">https:/= /groups.google.com/a/openssl.org/d/msgid/openssl-users/CAJbOq14ta%2BA60axFT= 2K7P9NS%3DipQgbWsAFWcsURV%2BJiBJAE2uQ%40mail.gmail.com</a>.<br /> --0000000000009c214a065386f1aa--