@marcel91200 / caddy Mirror · read-only / commits / 119e8794
Fork 0

Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS

Mirrored from https://github.com/Slazee/caddy.git

Synced Nov 13, 00:30 UTC

core: Skip `chmod` for abstract unix sockets (#5596)

because those aren't real paths on the filesystem and thus can't be `chmod`ed

Emily committed Jun 25, 2023 at 02:25 UTC 119e8794bcbda80ca337c1bb6164718e1490cc4f
1 file changed +11 -4
listeners.go
+11 -4
@@ -151,6 +151,7 @@ func (na NetworkAddress) listen(ctx context.Context, portOffset uint, config net
151 var err error
152 var address string
153 var unixFileMode fs.FileMode
154 + var isAbtractUnixSocket bool
155
156 // split unix socket addr early so lnKey
157 // is independent of permissions bits
@@ -160,6 +161,7 @@ func (na NetworkAddress) listen(ctx context.Context, portOffset uint, config net
161 if err != nil {
162 return nil, err
163 }
164 + isAbtractUnixSocket = strings.HasPrefix(address, "@")
165 } else {
166 address = na.JoinHostPort(portOffset)
167 }
@@ -167,8 +169,11 @@ func (na NetworkAddress) listen(ctx context.Context, portOffset uint, config net
169 // if this is a unix socket, see if we already have it open,
170 // force socket permissions on it and return early
171 if socket, err := reuseUnixSocket(na.Network, address); socket != nil || err != nil {
170 - if err := os.Chmod(address, unixFileMode); err != nil {
171 - return nil, fmt.Errorf("unable to set permissions (%s) on %s: %v", unixFileMode, address, err)
172 + if !isAbtractUnixSocket {
173 + if err := os.Chmod(address, unixFileMode); err != nil {
174 + return nil, fmt.Errorf("unable to set permissions (%s) on %s: %v", unixFileMode, address, err)
175 + }
176 +
177 }
178 return socket, err
179 }
@@ -211,8 +216,10 @@ func (na NetworkAddress) listen(ctx context.Context, portOffset uint, config net
216 }
217
218 if IsUnixNetwork(na.Network) {
214 - if err := os.Chmod(address, unixFileMode); err != nil {
215 - return nil, fmt.Errorf("unable to set permissions (%s) on %s: %v", unixFileMode, address, err)
219 + if !isAbtractUnixSocket {
220 + if err := os.Chmod(address, unixFileMode); err != nil {
221 + return nil, fmt.Errorf("unable to set permissions (%s) on %s: %v", unixFileMode, address, err)
222 + }
223 }
224 }
225