[PATCH v4 RESEND 5/5] Don't try to chmod(2) abstract Unix domain sockets.
Alejandro Colomar
alx.manpages at gmail.com
Tue Aug 23 23:02:38 UTC 2022
Don't try to handle Unix sockets starting with a '\0' as if they
were files, since they represent abstract sockets.
As we're using the "pretty" name generated by ngx_sock_ntop(),
which translates the '\0' into '@', test for '@'.
Co-developed-by: Andrew Clayton <a.clayton at f5.com>
Signed-off-by: Andrew Clayton <a.clayton at f5.com>
Signed-off-by: Alejandro Colomar <alx.manpages at gmail.com>
Cc: Bjornar Ness <bjornar.ness at gmail.com>
---
src/core/ngx_connection.c | 28 ++++++++++++++++------------
1 file changed, 16 insertions(+), 12 deletions(-)
diff --git a/src/core/ngx_connection.c b/src/core/ngx_connection.c
index fe729a78..1d041704 100644
--- a/src/core/ngx_connection.c
+++ b/src/core/ngx_connection.c
@@ -633,17 +633,19 @@ ngx_open_listening_sockets(ngx_cycle_t *cycle)
u_char *name;
name = ls[i].addr_text.data + sizeof("unix:") - 1;
- mode = (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);
+ if (name[0] != '@') {
+ mode = (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);
- if (chmod((char *) name, mode) == -1) {
- ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
- "chmod() \"%s\" failed", name);
- }
-
- if (ngx_test_config) {
- if (ngx_delete_file(name) == NGX_FILE_ERROR) {
+ if (chmod((char *) name, mode) == -1) {
ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
- ngx_delete_file_n " %s failed", name);
+ "chmod() \"%s\" failed", name);
+ }
+
+ if (ngx_test_config) {
+ if (ngx_delete_file(name) == NGX_FILE_ERROR) {
+ ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
+ ngx_delete_file_n " %s failed", name);
+ }
}
}
}
@@ -1078,9 +1080,11 @@ ngx_close_listening_sockets(ngx_cycle_t *cycle)
{
u_char *name = ls[i].addr_text.data + sizeof("unix:") - 1;
- if (ngx_delete_file(name) == NGX_FILE_ERROR) {
- ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_socket_errno,
- ngx_delete_file_n " %s failed", name);
+ if (name[0] != '@') {
+ if (ngx_delete_file(name) == NGX_FILE_ERROR) {
+ ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_socket_errno,
+ ngx_delete_file_n " %s failed", name);
+ }
}
}
--
2.37.2
More information about the nginx-devel
mailing list