From b025053ab03b2e19aee28505029954ca9d158b1d Mon Sep 17 00:00:00 2001 From: Martin Alex Philip Dawson Date: Wed, 2 Jan 2019 16:33:17 +0000 Subject: [PATCH] rpc: Warn the user when the path name is too long for the Unix ipc endpoint (#18330) --- rpc/ipc_unix.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/rpc/ipc_unix.go b/rpc/ipc_unix.go index 0851ea61e..707b47fd7 100644 --- a/rpc/ipc_unix.go +++ b/rpc/ipc_unix.go @@ -20,13 +20,31 @@ package rpc import ( "context" + "fmt" "net" "os" "path/filepath" + + "github.com/ethereum/go-ethereum/log" ) +/* +#include + +int max_socket_path_size() { +struct sockaddr_un s; +return sizeof(s.sun_path); +} +*/ +import "C" + // ipcListen will create a Unix socket on the given endpoint. func ipcListen(endpoint string) (net.Listener, error) { + if len(endpoint) > int(C.max_socket_path_size()) { + log.Warn(fmt.Sprintf("The ipc endpoint is longer than %d characters. ", C.max_socket_path_size()), + "endpoint", endpoint) + } + // Ensure the IPC path exists and remove any previous leftover if err := os.MkdirAll(filepath.Dir(endpoint), 0751); err != nil { return nil, err -- GitLab