alexander-bauer/distru

Attempt to index https:// site causes a runtime error

Opened this issue · 0 comments

Tested with projectmeshnet.org. It causes a crypto-related runtime error.


panic: crypto: requested hash function is unavailable

goroutine 3 [running]:
crypto.Hash.New(0x5, 0x8, 0x0)
    /usr/lib/go/src/pkg/crypto/crypto.go:62 +0x93
crypto/x509.(*Certificate).CheckSignature(0x188bea00, 0x4, 0x1898d00e, 0x70d, 0xe5c, ...)
    /usr/lib/go/src/pkg/crypto/x509/x509.go:391 +0x5b
crypto/x509.(*Certificate).CheckSignatureFrom(0x188be800, 0x188bea00, 0x0, 0x0)
    /usr/lib/go/src/pkg/crypto/x509/x509.go:370 +0x141
crypto/x509.(*CertPool).findVerifiedParents(0x18983f80, 0x188be800, 0x0, 0x0)
    /usr/lib/go/src/pkg/crypto/x509/cert_pool.go:44 +0x158
crypto/x509.(*Certificate).buildChains(0x188be800, 0x1898f000, 0x65d65c, 0x1, 0x1, ...)
    /usr/lib/go/src/pkg/crypto/x509/verify.go:198 +0x16d
crypto/x509.(*Certificate).Verify(0x188be800, 0x0, 0x0, 0x18983f80, 0x1898f020, ...)
    /usr/lib/go/src/pkg/crypto/x509/verify.go:177 +0x17a
crypto/tls.(*Conn).clientHandshake(0x1891e180, 0x0, 0x0)
    /usr/lib/go/src/pkg/crypto/tls/handshake_client.go:117 +0x1209
----- stack segment boundary -----
crypto/tls.(*Conn).Handshake(0x1891e180, 0x0, 0x0)
    /usr/lib/go/src/pkg/crypto/tls/conn.go:808 +0xc3
net/http.(*Transport).getConn(0x18840c60, 0x189836c0, 0x189836c0, 0x0)
    /usr/lib/go/src/pkg/net/http/transport.go:369 +0x398
net/http.(*Transport).RoundTrip(0x18840c60, 0x189137e0, 0x189801e0, 0x0, 0x0, ...)
    /usr/lib/go/src/pkg/net/http/transport.go:155 +0x23b
net/http.send(0x189137e0, 0x1883ed80, 0x18840c60, 0x0, 0x0, ...)
    /usr/lib/go/src/pkg/net/http/client.go:133 +0x325
net/http.(*Client).doFollowingRedirects(0x832d1b8, 0x189135b0, 0x18956410, 0x0, 0x0, ...)
    /usr/lib/go/src/pkg/net/http/client.go:227 +0x568
net/http.(*Client).Get(0x832d1b8, 0x18901f90, 0x24, 0x80612c5, 0x0, ...)
    /usr/lib/go/src/pkg/net/http/client.go:176 +0x86
net/http.Get(0x18901f90, 0x24, 0x19, 0x0, 0x0, ...)
    /usr/lib/go/src/pkg/net/http/client.go:158 +0x40
main.getRobotsPermission(0x18878040, 0x19, 0x0, 0x0)
    /home/sasha/dev/go/src/distru/index.go:241 +0x6b
main.newSite(0x18878040, 0x19, 0x18983000, 0x12)
    /home/sasha/dev/go/src/distru/index.go:159 +0x82
main.Indexer(0x18800478, 0x18801180, 0x0)
    /home/sasha/dev/go/src/distru/index.go:140 +0x6d
created by main.MaintainIndex
    /home/sasha/dev/go/src/distru/index.go:134 +0x74

goroutine 1 [chan receive]:
net.(*pollServer).WaitRead(0x188018a0, 0x188523f0, 0x1888f3a0, 0xb)
    /usr/lib/go/src/pkg/net/fd.go:268 +0x75
net.(*netFD).accept(0x188523f0, 0x8089474, 0x0, 0x1883e4a0, 0x18800180, ...)
    /usr/lib/go/src/pkg/net/fd.go:622 +0x199
net.(*TCPListener).AcceptTCP(0x18891260, 0x81c638c, 0x0, 0x0)
    /usr/lib/go/src/pkg/net/tcpsock_posix.go:322 +0x56
net.(*TCPListener).Accept(0x18891260, 0x0, 0x0, 0x0, 0x0, ...)
    /usr/lib/go/src/pkg/net/tcpsock_posix.go:332 +0x39
main.Serve(0x1883eea0, 0x10)
    /home/sasha/dev/go/src/distru/serve.go:43 +0x354
main.main()
    /home/sasha/dev/go/src/distru/distru.go:12 +0x3d

goroutine 2 [syscall]:
created by runtime.main
    /build/buildd/golang-1/src/pkg/runtime/proc.c:221

goroutine 5 [syscall]:
syscall.Syscall6()
    /build/buildd/golang-1/src/pkg/syscall/asm_linux_386.s:46 +0x27
syscall.EpollWait(0x7, 0x18850008, 0xa, 0xa, 0xffffffff, ...)
    /usr/lib/go/src/pkg/syscall/zerrors_linux_386.go:1780 +0x7d
net.(*pollster).WaitFD(0x18850000, 0x188018a0, 0x0, 0x0, 0x0, ...)
    /usr/lib/go/src/pkg/net/fd_linux.go:146 +0x12b
net.(*pollServer).Run(0x188018a0, 0x5)
    /usr/lib/go/src/pkg/net/fd.go:236 +0xdf
created by net.newPollServer
    /usr/lib/go/src/pkg/net/newpollserver.go:35 +0x308

goroutine 6 [chan receive]:
net.(*pollServer).WaitRead(0x188018a0, 0x188812a0, 0x1888f3a0, 0xb)
    /usr/lib/go/src/pkg/net/fd.go:268 +0x75
net.(*netFD).accept(0x188812a0, 0x8089474, 0x0, 0x1883e4a0, 0x18800180, ...)
    /usr/lib/go/src/pkg/net/fd.go:622 +0x199
net.(*TCPListener).AcceptTCP(0x18800580, 0xc, 0x0, 0x0)
    /usr/lib/go/src/pkg/net/tcpsock_posix.go:322 +0x56
net.(*TCPListener).Accept(0x18800580, 0x0, 0x0, 0x0, 0x0, ...)
    /usr/lib/go/src/pkg/net/tcpsock_posix.go:332 +0x39
net/http.(*Server).Serve(0x18880120, 0x1888f540, 0x18800580, 0x0, 0x0, ...)
    /usr/lib/go/src/pkg/net/http/server.go:1012 +0x77
net/http.(*Server).ListenAndServe(0x18880120, 0x18880120, 0x0)
    /usr/lib/go/src/pkg/net/http/server.go:1002 +0x9f
net/http.ListenAndServe(0x81d8af0, 0x5, 0x0, 0x0, 0x18891300, ...)
    /usr/lib/go/src/pkg/net/http/server.go:1074 +0x55
main.ServeWeb()
    /home/sasha/dev/go/src/distru/web.go:15 +0xbf
created by main.Serve
    /home/sasha/dev/go/src/distru/serve.go:40 +0x341

goroutine 37 [chan receive]:
net.(*pollServer).WaitRead(0x188018a0, 0x18913620, 0x1888f3a0, 0xb)
    /usr/lib/go/src/pkg/net/fd.go:268 +0x75
net.(*netFD).Read(0x18913620, 0x18986000, 0x1000, 0x1000, 0xffffffff, ...)
    /usr/lib/go/src/pkg/net/fd.go:428 +0x19a
net.(*TCPConn).Read(0x18971e48, 0x18986000, 0x1000, 0x1000, 0x0, ...)
    /usr/lib/go/src/pkg/net/tcpsock_posix.go:87 +0xb1
bufio.(*Reader).fill(0x189800c0, 0x0)
    /usr/lib/go/src/pkg/bufio/bufio.go:77 +0x115
bufio.(*Reader).Peek(0x189800c0, 0x1, 0x18956401, 0x0)
    /usr/lib/go/src/pkg/bufio/bufio.go:102 +0x8b
net/http.(*persistConn).readLoop(0x1891ce80, 0x18878360)
    /usr/lib/go/src/pkg/net/http/transport.go:521 +0x8f
created by net/http.(*Transport).getConn
    /usr/lib/go/src/pkg/net/http/transport.go:382 +0x591

goroutine 38 [runnable]:
syscall.Syscall()
    /build/buildd/golang-1/src/pkg/syscall/asm_linux_386.s:33 +0x57
syscall.Close(0x4, 0x0, 0x0)
    /usr/lib/go/src/pkg/syscall/zerrors_linux_386.go:1700 +0x49
os.(*file).close(0x189740c0, 0x0, 0x0)
    /usr/lib/go/src/pkg/os/file_unix.go:96 +0x48
----- stack segment boundary -----
created by runtime.gc
    /build/buildd/golang-1/src/pkg/runtime/mgc0.c:882